1

私は非常に単純なコントローラーを持っています:

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)

また、IRBでrequire'net / ssh'を試してみましたが、動作します。

MyControllerはWindowsでは正常に動作しますが、Ubuntuでは失敗します。

何が間違っている可能性がありますか?

4

6 に答える 6

3

私が取り組んでいるプロジェクトでは、config/environment.rbファイルを使用してgemrequireのものを保持しました。それで

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'が必要になると思います。ただし、gemの名前にハイフンが含まれていると失敗するという問題が発生しました。それから私たちはしなければなりませんでした

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

そのバージョンが必要になるかもしれません。だからそれは

  config.gem 'net-ssh', :lib => 'net/ssh'
于 2009-05-27T14:27:28.507 に答える
2

レール3.0の場合、問題がなければこのソリューション。これをyourapp/Gemfileに追加します。

gem 'net-ssh
于 2011-08-09T08:07:22.637 に答える
1

これは役立つかもしれません:

RailsGemの依存関係とプラグインエラー

これも一見の価値があります:

Railscasts:宝石の依存関係

于 2009-05-27T14:06:41.637 に答える
1

私の場合、スタンドアロンのRubyアプリなので、必要なのはRubygemsだけです。

于 2009-09-07T21:49:11.097 に答える
0

Dr Nicの「gemsonrails」を使用して、ベンダーのgemをプラグインとしてロードすることもできます。確認してください:http: //gemsonrails.rubyforge.org

于 2009-05-27T18:05:14.900 に答える
0

元々の問題は、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.

だから、私は、レールがこの宝石を見つけることができなかったと思います。

于 2009-05-27T21:00:20.150 に答える