2017-05-06 130 views
0

我已經安裝了許多寶石,但是當我去「需要」他們,我得到「沒有這樣的文件加載錯誤」:紅寶石寶石安裝,但無法要求它

~/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 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顯示安裝作爲本地寶石寶石:

*** LOCAL GEMS *** 

activesupport (5.1.0) 
addressable (2.5.1) 
... 
whois (4.0.1) 

運行gem env顯示了我使用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 

檢查寶石路的寶石whois,我可以看到它在那裏。

但奇怪的是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塞拉利昂10.12.4
  • 我使用rbenv和紅寶石打造
  • 使用Ruby 2.4.1全局設置
  • PATH = /Users/perfektion/.rbenv/shims:/Users/perfektion/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
  • 回覆 - 安裝了rbenv,ruby-build,ruby並刪除所有寶石並重新安裝。

我覺得這是愚蠢的,但任何人都可以看到我在做什麼錯誤,這將導致紅寶石無法找到這些寶石?

謝謝!

更新

不知道爲什麼我沒有早點挑這個,但是在我的腳本的頂部,我有:

#!/usr/bin/ruby 

我不知道爲什麼在此之前工作,它不是」現在。

感謝大家的幫助:)

回答

0

因爲Ruby正試圖從是不一樣的,你安裝了rbenv的WOIS寶石彼此路徑獲取庫。 (可能與rvm和rbenv有什麼衝突,我不知道)

嘗試創建一個新文件夾,在本地設置ruby 2.4與local rbenv <version>,然後嘗試再次設置要求。

+0

我曾經嘗試這樣做,並沒有什麼區別。據我所知,運行'rbenv全球2.4.1',這將設置紅寶石版本2.4.1幾乎在任何地方使用? – Perfektion

1

每當您嘗試運行該文件時,它都會在Ruby 2.0目錄中尋找gem。無論你做什麼gem env它都會顯示2.4.1作爲你的ruby版本。

請記住,與rbenv您可以設置紅寶石的局部,全局或shell級版本運行:https://github.com/rbenv/rbenv#rbenv-local

你也可以創建一個.ruby-version文件的目錄,並rbenv將尋找並使用該版本(如果存在)。在您使用哪個版本的ruby安裝gem以及哪個版本用於運行您的whois腳本之間有什麼關係。

+0

感謝您的確認。在盯着幾個小時的錯誤結束之後,我忽略了錯誤報告了不同版本的ruby的事實。仍然我不知道爲什麼執行./whois.rb不再調用rbenv版本。 – Perfektion

0

當您鍵入./whois.rb時,您會調用ruby系統。

嘗試使用ruby ./whois.rb 它會調用RVM/rbenv加載紅寶石系統

+0

這對我有用!然而,我爲什麼./whois.rb只是突然停止在我的系統上工作而感到不知所措......:/ – Perfektion

+0

@Perfektion可能之前已將rbenv版本加載爲系統版本。我不知道該怎麼做,但它應該是這個'本地rbenv '命令 – lucianosousa

+0

絕對可能是一種可能性!我通常堅持使用rbenv設置爲全局的一個ruby版本,但是誰知道我做了什麼!感謝所有的幫助:) – Perfektion