'no such file to load -- net/ssh' from rails Controller on Ubuntu

alex2k8 picture alex2k8 · May 27, 2009 · Viewed 11.2k times · Source

I have a very simple controller:

require 'net/ssh'

class MyController < ApplicationController
    def foo
        render :text => 'bar'
    end
end

But when I request http://server:3000/my/foo I get:

MissingSourceFile in MyController#foo 
no such file to load -- net/ssh

The gem is installed

> gem list net-ssh

*** LOCAL GEMS ***
net-ssh (2.0.11)

Also, I tried require 'net/ssh' in IRB, and it works.

MyController works fine on Windows, but fail on Ubuntu.

What can be wrong?

Answer

Hamish Downer picture Hamish Downer · May 27, 2009

In a project I am working on we have used the config/environment.rb file to hold the gem require stuff. So

Rails::Initializer.run do |config|
  # ...
  config.gem 'net-ssh'
  config.gem 'daemons'
  config.gem 'slave'
  config.gem 'vpim'
  config.gem 'json'
  # ...
end

I think you will require 'net-ssh' rather than 'net/ssh'. However we did run into a problem where have a hyphen in the name of the gem led to failures. Then we had to do

  config.gem 'Ruby-IRC', :lib => 'IRC'

so that version maybe required for you. So that would be

  config.gem 'net-ssh', :lib => 'net/ssh'