任何人都可以帮我解决我遇到的奇怪的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)

任何线索?

有帮助吗?

解决方案

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top