我一直在追逐我的尾巴在這個問題上幾天,現在比以往任何時候都更遠。我運行的是Rails 3.1,Ruby 1.9,Gem 1.8.15,Linux RHEL 4環境。紅寶石寶石路徑奇怪
簡化的問題是,ruby'require'(和rails)找不到我應用程序需要的所有寶石。而且似乎寶石需求找不到與* .rb不同的寶石名稱。例如,「require'sass'」找到sass.rb.但是「require'therubyracer'」找不到lib中的v8.rb。沒有名爲「therubyracer.rb」的文件。與'therubyrhino'相同的 - 沒有'therubyrhino.rb',但是lib中有'rhino.rb'。
即使這些gem位於我的Gemfile中,Bundle安裝也不會拋出錯誤。
下面是一個例子:
首先,以展示寶石安裝:
>locate 'rhino.rb'
/usr/local/lib/ruby/gems/1.9.1/gems/therubyrhino-1.73.1/lib/rhino.rb
/usr/local/lib/ruby/gems/1.9.1/gems/gems/therubyrhino-1.73.1/lib/rhino.rb
即使「therubyrhino」被安裝,並在道路,捆綁合作,「創業板這」找不到。這個寶石在下面,它可以找到相同的路徑作爲'sass'的
。以下是錯誤:
gem which 'therubyrhino'
ERROR: Can't find ruby library file or shared library therubyrhino
注意,寶石可以找到寶石裏面的rhino.rb文件,因此該路徑必須正常工作。
>gem which rhino
/usr/local/lib/ruby/gems/1.9.1/gems/therubyrhino-1.73.1/lib/rhino.rb
要求並不像rhino.rb雖然:
ruby -rubygems -e 'require "rhino"'
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `
require': no such file to load -- java (LoadError)
它不能找到名字的寶石。
ruby -rubygems -e 'require "therubyrhino"'
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in ` require':
no such file to load -- therubyrhino (LoadError) from
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in ` require'
但正如我所提到的,在我的Gemfile中,'therubyrhino',Bundle安裝工程。
這裏是我的寶石路徑,其中我手動設置爲測試:
>export GEM_PATH=/usr/local/lib/ruby/gems/1.9.1:/usr/local/lib/ruby/gems/1.9.1/gems:/usr/local/lib/ruby/gems/1.9.1/gems/gem
>gem env
...
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.15
- RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [i686-linux]
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.9.1
- RUBY EXECUTABLE: /usr/local/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-linux
- GEM PATHS:
- /usr/local/lib/ruby/gems/1.9.1
- /usr/local/lib/ruby/gems/1.9.1/gems
- /usr/local/lib/ruby/gems/1.9.1/gems/gem
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
最後,這裏是一個情況下生活是美好的,需要的作品。一切都很好,寶石名稱= LIB名(... /上海社會科學院/ lib中/ sass.rb)的前綴。首先,我們可以看到,青菜寶石安裝:
>locate sass.rb
/usr/local/lib/ruby/gems/1.9.1/gems/sass-3.1.14/lib/sass.rb
/usr/local/lib/ruby/gems/1.9.1/gems/haml-3.1.4/vendor/sass/lib/sass.rb
/usr/local/lib/ruby/gems/1.9.1/gems/haml-3.1.4/lib/sass.rb
寶石可以找到它?是。
>gem which sass
/usr/local/lib/ruby/gems/1.9.1/gems/haml-3.1.4/lib/sass.rb
並確實需要紅寶石的工作嗎?是。
>ruby -rubygems -e 'require "sass"'
(no error)
感謝您的幫助。