4

好的,我刚刚花了 4 个小时试图解决这个问题,但没有成功。我已经尝试了所有常见的嫌疑人,并用谷歌搜索了 ruby​​ 1.9.1、加载路径、gems、mac os x、freebsd、prawn 和其他东西的每个组合。底线是这个:

当我从 mac os x 10.5 上的源代码编译 ruby​​1.9.1-p129 时,我得到的默认加载路径 ($:) 是:

ruby -e "输入 $:"
/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
.

例如,当我安装虾 gem 时,我得到:

大虾的宝石
(检查 gem prawn-0.5.0.1 for prawn)
/虾.rb

当我尝试要求它时,我得到:

ruby -e "需要'大虾'"
-e:1:in `require': 没有要加载的文件 -- prawn (LoadError)
    从 -e:1:in `'

我能够解决这个问题的唯一方法是做一些像这样愚蠢的事情:

$: << "/usr/local/lib/ruby/gems/1.9.1/gems/prawn-0.5.0.1/lib"

当然,这完全是荒谬的。所以问题是如何让 ruby​​ 1.9.1 识别并遵循正确的 gems 路径?我从来没有遇到过 1.8.7 的这个问题,所以我假设它是 1.9.1 特定的。我觉得我在这里遗漏了一些完全明显的东西,任何帮助将不胜感激!

4

5 回答 5

10

设置 GEM_PATH=/usr/local/lib/ruby/gems/1.9.1

解决了这个问题。我知道这很简单。只是让我更恼火的是,我花了一整天的时间才弄清楚!!这是因为 1.8.7 从来没有这个问题,当然不是 RTFM!

于 2009-06-28T02:49:16.000 回答
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/
于 2009-11-01T20:52:05.707 回答
2

下次遇到此类问题时,不要忘记从命令行运行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/
于 2011-03-20T22:50:50.593 回答
1
require 'rubygems'
require 'prawn'

除非 1.9 中的情况发生了变化,否则您不再需要首先要求 ruby​​gems。

于 2009-06-28T01:20:51.433 回答
0

我正在寻找相同问题的不同答案。在某些情况下(即系统启动任务),在 ruby​​ 运行之前设置环境变量是不可能的。

运行 ruby​​ (v >= 1.9.1) 代码是否需要 gems?不设置 GEM_PATH?

于 2010-09-22T02:15:45.857 回答