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 文件来保存 gem 需要的东西。所以

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

在 Rails 3.0 的情况下,如果可以,则此解决方案。将此添加到 yourapp/Gemfile 中,

gem 'net-ssh
于 2011-08-09T08:07:22.637 回答
1

就我而言,因为它是一个独立的 ruby​​ 应用程序,所以我只需要 ruby​​gems。

于 2009-09-07T21:49:11.097 回答
1

这可能会有所帮助:

Rails Gem 依赖项和插件错误

这也值得一看:

Railscasts:Gem 依赖项

于 2009-05-27T14:06:41.637 回答
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.

所以,我猜,rails 找不到这个宝石。

于 2009-05-27T21:00:20.150 回答