ruby需要问题(与$ LOAD_PATH有关)

时间:2011-06-14 13:43:14

标签: ruby rubygems require

我正在尝试使用我刚刚安装的gem(通过sudo gem install excelsior),如此

  

要求'rubygems'

     

要求'excelsior'

     

...

这在irb中运行良好,但是当我将完全相同的代码粘贴到.rb文件中并尝试使用ruby运行时,我得到<internal:lib/rubygems/custom_require>:29:in require': no such file to load -- excelsior (LoadError)

我想它与加载路径有关,显然与iry完全不同(我在Mac上并且不记得我是如何安装我正在使用的ruby版本)。

那么如何将ruby配置为与irb具有相同的加载路径?

另外一条信息:一些宝石可以使用,但不是全部:S

4 个答案:

答案 0 :(得分:2)

您可以轻松检查irb加载路径中的内容:

irb(main):001:0> $LOAD_PATH

然后你可以用-I选项(可以多次使用)来识别丢失的目录并将它们包含在ruby中:

ruby -I missing_dir_1 -I missing_dir_2 your_script.rb

修改 有可能,虽然我还没有测试过,通过安装带有sudo的Excelsior gem,你可以把它放在一个没有sudo的ruby运行的目录中。试试sudo ruby your_script.rb

答案 1 :(得分:1)

Maro说的话。

你也应该尝试:

ruby -e 'puts $LOAD_PATH' 

......看看与irb有什么不同。

编辑:您是否可能安装了两个不同版本的ruby?尝试:

type -a ruby
type -a irb

查看它们是否链接到另一个可执行文件,例如'irb1.8'。

答案 2 :(得分:1)

要查看这两个可执行文件是否是不同版本的ruby(有些人怀疑),请它执行

puts RUBY_VERSION

答案 3 :(得分:0)

我猜是irb和ruby以某种方式运行不同的ruby版本。 gem env也可能有所帮助。