我正在尝试使用我刚刚安装的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
答案 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
也可能有所帮助。