Ruby 1.9.1加载路径疯狂

时间:2009-06-27 21:10:28

标签: ruby rubygems prawn

好吧,我刚刚花了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。我觉得我错过了一些完全明显的东西,任何帮助都会非常感激!

5 个答案:

答案 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?