好吧,我刚刚花了4个小时试图弄清楚这个没有成功。我已经尝试了所有常见的嫌疑人,并搜索了ruby 1.9.1,加载路径,宝石,mac os x,freebsd,prawn等内容的每个组合。底线是:
当我从mac os x 10.5上的源代码编译ruby1.9.1-p129时,我得到的默认加载路径($ :)是:
ruby -e "puts $:" /usr/local/lib/ruby/gems /usr/local/lib/ruby/site_ruby/1.9.1 /usr/local/lib/ruby/site_ruby/1.9.1/i386-darwin9.7.0 /usr/local/lib/ruby/site_ruby /usr/local/lib/ruby/vendor_ruby/1.9.1 /usr/local/lib/ruby/vendor_ruby/1.9.1/i386-darwin9.7.0 /usr/local/lib/ruby/vendor_ruby /usr/local/lib/ruby/1.9.1 /usr/local/lib/ruby/1.9.1/i386-darwin9.7.0 .
当我安装prawn gem时,例如,我得到:
gem which prawn (checking gem prawn-0.5.0.1 for prawn) /prawn.rb
当我尝试要求时,我得到:
ruby -e "require 'prawn'" -e:1:in `require': no such file to load -- prawn (LoadError) from -e:1:in `'
我能够解决这个问题的唯一方法是做一些像这样的蠢事:
$: << "/usr/local/lib/ruby/gems/1.9.1/gems/prawn-0.5.0.1/lib"
当然,这完全是荒谬的。所以问题是如何让ruby 1.9.1识别并遵循正确的宝石路径?我从来没有遇到1.8.7这个问题,所以我假设它具体为1.9.1。我觉得我错过了一些完全明显的东西,任何帮助都会非常感激!
答案 0 :(得分:9)
设置GEM_PATH = / usr / local / lib / ruby / gems / 1.9.1
解决了这个问题。我知道这很简单。只是让我觉得它花了一整天才搞清楚!这是由于1.8.7从未出现过这个问题,当然也不是RTFM !!
答案 1 :(得分:3)
kubuntu karmic上的同样问题。
安装:
$ sudo apt-get install build-essential ruby1.9.1-full libsqlite3 libsqlite3-dev rubygems1.9
$ sudo gem install sqlite3-ruby rails thin --no-rdoc --no-ri
结果:
$ ruby -e "require 'rubygems'; require 'sqlite3'"
-e:1:in `require': no such file to load -- sqlite3 (LoadError)
from -e:1:in `<main>'
溶液:
$ export GEM_PATH=/usr/lib/ruby1.9.1/gems/1.9.1/
答案 2 :(得分:1)
require 'rubygems'
require 'prawn'
除非1.9中的内容发生了变化,否则您不再需要首先使用rubygems。
答案 3 :(得分:1)
下次出现此类问题时,请不要忘记从命令行运行gem env
。这是在Windows上发生的事情,但原理大致相同:
C:\Documents and Settings\a.grimm>gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.5
- RUBY VERSION: 1.9.1 (2010-01-10 patchlevel 378) [i386-mingw32]
- INSTALLATION DIRECTORY: C:/Ruby19/lib/ruby/gems/1.9.1
- RUBY EXECUTABLE: C:/Ruby19/bin/ruby.exe
- EXECUTABLE DIRECTORY: C:/Ruby19/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-mingw32
- GEM PATHS:
- C:/Ruby19/lib/ruby/gems/1.9.1
- C:/Documents and Settings/a.grimm/.gem/ruby/1.9.1
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://gems.rubyforge.org/
答案 4 :(得分:0)
我正在寻找同一问题的不同答案。在某些情况下(即系统启动任务),在ruby运行之前设置环境变量是不可能的。
运行ruby(v&gt; = 1.9.1)代码是否有某种方法需要宝石?没有设置GEM_PATH?