引用已安装的Ruby Gem时出错

时间:2009-10-25 23:59:06

标签: ruby ssh rubygems sftp

任何人都可以帮我解决我遇到的奇怪的Ruby Gem问题 - 请注意我过去安装了很多宝石,从未见过这个。

我使用以下命令下载了net-ssh和net-sftp gems:

sudo gem install net-ssh
sudo gem install net-sftp

两者都安装成功。但是,当我在代码中引用文件时,出现以下错误:

./workers/ffmpeg_worker.rb:6:in `require': no such file to load -- net/ssh (LoadError)
    from ./workers/ffmpeg_worker.rb:6
    from ./workers/tests/test_ffmpeg_worker.rb:3:in `require'
    from ./workers/tests/test_ffmpeg_worker.rb:3
    from /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `load'
    from /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5
    from /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `each'
    from /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5
rake aborted!
Command failed with status (1): [/System/Library/Frameworks/Ruby.framework/...]

当我这样做时注意:

gem list --local

宝石列为:

net-scp (1.0.2)
net-sftp (2.0.2, 1.1.0)
net-ssh (2.0.15, 1.1.2)
net-ssh-gateway (1.0.1)

任何线索?

1 个答案:

答案 0 :(得分:3)

当我看到这种情况时,通常归结为在机器上安装了多个Ruby(这意味着不止一个宝石位置等),并且不同的应用程序或环境混淆了要加载哪个。

先检查一下。如果这不是答案,请执行gem which net/ssh以查看RubyGems认为安装gem的位置 - 确保它不是本地用户的 .gems 目录或其他内容。

如果没有人解决这个谜团,请将一些调试代码粘贴到您的工作人员脚本中并让它输出其加载路径( $:),这样您就可以看到它在哪里。