我一直在追逐我的尾巴在这个问题上几天,现在比以往任何时候都更远。我运行的是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)
感谢您的帮助。