我已经安装了许多宝石,但是当我去“要求”它们时,我得到“没有这样的文件加载错误”:
~/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
显示我期望的gem路径,因为我正在使用rbenv:
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小时内才变得明显。在此之前,我正在玩的脚本工作正常。
/Users/perfektion/.rbenv/shims:/Users/perfektion/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
我觉得这是愚蠢的事,但是有人能看到我在这里做错了会导致红宝石无法找到这些宝石吗?
谢谢!
不知道为什么我之前没有提到这个,但是在我的剧本的顶部我有:
#!/usr/bin/ruby
我不确定为什么之前有效,现在不是。
感谢大家的帮助:)。
答案 0 :(得分:1)
每当您尝试运行该文件时,它都会在Ruby 2.0目录中查找gem。只要你gem env
它显示2.4.1作为你的红宝石版本。
请记住,使用rbenv,您可以设置运行的本地,全局或shell级别版本的ruby:https://github.com/rbenv/rbenv#rbenv-local
您还可以在目录中创建.ruby-version
文件,rbenv将查找该文件并使用该版本(如果存在)。在用于安装gem的ruby版本和用于运行whois脚本的ruby版本之间存在一些问题。
答案 1 :(得分:0)
因为ruby试图从另一条路径中获取该库,该路径与使用rbenv安装wois gem的路径不同。 (与rvm和rbenv有什么冲突,我不知道。)
尝试创建一个新文件夹,使用local rbenv <version>
在本地设置ruby 2.4,然后尝试再次提出要求。
答案 2 :(得分:0)
当您键入./whois.rb
时,您调用ruby系统。
尝试使用ruby ./whois.rb
它将调用RVM / rbenv加载的ruby系统