【发布时间】:2017-05-07 09:41:15
【问题描述】:
我已经安装了许多 gem,但是当我去“要求”它们时,我得到“没有这样的文件来加载错误”:
~/Documents/Projects/Ruby Scripts/Domain » ./whois.rb
/System//Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in 'require': cannot load such file -- whois (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from ./whois.rb:3:in `<main>'
我已经安装了 gem,它似乎已经安装成功:
~ » gem install whois
Fetching: whois-4.0.1.gem (100%)
Successfully installed whois-4.0.1
Parsing documentation for whois-4.0.1
Installing ri documentation for whois-4.0.1
Done installing documentation for whois after 0 seconds
1 gem installed
运行gem list 显示安装为本地gem 的gem:
*** LOCAL GEMS ***
activesupport (5.1.0)
addressable (2.5.1)
...
whois (4.0.1)
运行 gem env 显示了我在使用 rbenv 时所期望的 gem 路径:
RubyGems Environment:
- RUBYGEMS VERSION: 2.6.11
- RUBY VERSION: 2.4.1 (2017-03-22 patchlevel 111) [x86_64-darwin16]
- INSTALLATION DIRECTORY: /Users/perfektion/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0
- USER INSTALLATION DIRECTORY: /Users/perfektion/.gem/ruby/2.4.0
- RUBY EXECUTABLE: /Users/perfektion/.rbenv/versions/2.4.1/bin/ruby
- EXECUTABLE DIRECTORY: /Users/perfektion/.rbenv/versions/2.4.1/bin
- SPEC CACHE DIRECTORY: /Users/perfektion/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /Users/perfektion/.rbenv/versions/2.4.1/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-16
- GEM PATHS:
- /Users/perfektion/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0
- /Users/perfektion/.gem/ruby/2.4.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Users/perfektion/.rbenv/versions/2.4.1/bin
- /usr/local/Cellar/rbenv/1.1.0/libexec
- /Users/perfektion/.rbenv/shims
- /Users/perfektion/.rbenv/bin
- /Users/perfektion/.rbenv/shims
- /Users/perfektion/.rbenv/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
检查 gem whois 的 gem 路径,我可以看到它位于那里。
奇怪的是,虽然 irb 似乎能够找到宝石:
~/ » irb
irb(main):001:0> require 'whois'
=> true
irb(main):002:0> whois = Whois::Client.new
=> #<Whois::Client:0x007fbc121074c8 @timeout=10, @settings={}>
我已经解决这个问题大约 24 小时了,我觉得我疯了。此问题仅在过去 24-48 小时内变得明显。在此之前,我使用的脚本运行良好。
可能有用的信息
- 运行 OSX Sierra 10.12.4
- 我正在使用 rbenv 和 ruby-build
- 使用 Ruby 2.4.1 全局设置
- 路径 =
/Users/perfektion/.rbenv/shims:/Users/perfektion/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin - 重新安装 rbenv、ruby-build、ruby 并删除所有 gem 并重新安装。
我觉得这很愚蠢,但是谁能看到我在这里做错了什么会导致 ruby 无法找到这些宝石?
谢谢!
更新
不知道为什么我没有早点选择这个,但在我的脚本顶部我有:
#!/usr/bin/ruby
我不知道为什么这之前有效,现在无效。
感谢大家的帮助:)
【问题讨论】: