'нет такого файла для загрузки - net/ssh' из rails Controller в Ubuntu

У меня очень простой контроллер:

require 'net/ssh'

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

Но когда я запрашиваю http://server:3000/my/foo, я получаю:

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

Драгоценный камень установлен

> gem list net-ssh

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

Кроме того, я попытался потребовать 'net/ssh' в IRB, и это работает.

MyController отлично работает в Windows, но не работает в Ubuntu.

Что может быть не так?

6 ответов

Решение

Это может помочь:

Rails Gem Зависимости и ошибки плагинов

Это также стоит посмотреть:

Railscasts: Gem Dependencies

В проекте, над которым я работаю, мы использовали файл config/environment.rb для хранения необходимых для гемов вещей. Так

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

Я думаю, что вам потребуется "net-ssh", а не "net/ssh". Однако мы столкнулись с проблемой, когда дефис в названии драгоценного камня приводил к сбоям. Тогда мы должны были сделать

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

так что эта версия может потребоваться для вас. Так что это будет

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

В случае рельсов 3.0 это решение, если ОК. добавьте это в yourapp/Gemfile,

gem 'net-ssh

В моем случае, так как это отдельное приложение ruby, мне нужно было только требовать rubygems.

Вы также можете использовать д-р Ник ''gemsonrails'' и загружать продаваемые драгоценные камни в качестве плагинов, проверьте: http://gemsonrails.rubyforge.org/

Я думаю, оригинальная проблема была в том, что я использовал обычного пользователя вместо root:

$ gem install net-ssh
  WARNING:  Installing to ~/.gem since /usr/lib/ruby/gems/1.8 and
            /usr/bin aren't both writable.
  WARNING:  You don't have /home/alex/.gem/ruby/1.8/bin in your PATH,
            gem executables will not run.

Так что, я думаю, рельсы не смогли найти этот драгоценный камень.

Другие вопросы по тегам