Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby require问题(与$LOAD\u PATH有关)_Ruby_Rubygems_Require - Fatal编程技术网

ruby require问题(与$LOAD\u PATH有关)

ruby require问题(与$LOAD\u PATH有关),ruby,rubygems,require,Ruby,Rubygems,Require,我正在尝试使用我刚刚安装的gem(通过sudogeminstallexcelsior),就像这样 需要“rubygems” 需要“精益求精” 这在irb中工作得很好,但是当我将完全相同的代码粘贴到.rb文件中并尝试使用ruby运行它时,我得到了:29:in require':没有这样的文件要加载--excelsior(LoadError) 我猜这与irb中的加载路径显然与ruby完全不同有关(我在mac上,不记得我是如何安装我正在使用的ruby版本的) 那么,如何配置ruby使其具有与irb相

我正在尝试使用我刚刚安装的gem(通过
sudogeminstallexcelsior
),就像这样

需要“rubygems”

需要“精益求精”

这在irb中工作得很好,但是当我将完全相同的代码粘贴到.rb文件中并尝试使用ruby运行它时,我得到了
:29:in require':没有这样的文件要加载--excelsior(LoadError)

我猜这与irb中的加载路径显然与ruby完全不同有关(我在mac上,不记得我是如何安装我正在使用的ruby版本的)

那么,如何配置ruby使其具有与irb相同的加载路径呢


另外一条信息:一些gem有效,但不是全部:S

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

irb(main):001:0> $LOAD_PATH
然后,您可以通过使用
-I
选项调用ruby来识别缺少的目录并将其包含在ruby中(该选项可能会被多次使用):

编辑: 有一种可能性,尽管我还没有对它进行测试,那就是通过安装Excelsior gem和
sudo
,您将它放在了一个ruby ran没有
sudo
无法访问的目录中。试试看SudoRuby你的脚本.rb

Maro说的话

您还应该尝试:

ruby -e 'puts $LOAD_PATH' 
…看看与irb有什么区别

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

type -a ruby
type -a irb

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

我猜irb和ruby运行的是不同的ruby版本。
gem env
可能也会有帮助。

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

puts RUBY_VERSION

ruby、gem和irb都是相同安装的一部分吗?使用
哪个
命令进行检查。另外,您可以从bash或在ruby脚本中修改
$LOAD\u路径
。非常类似的问题:有没有一种方法可以添加到加载路径,而不必在调用ruby命令时全部指定?比如说一个配置文件什么的?@Nat
$LOAD\u路径不起作用,这看起来很奇怪。我添加了一个
$LOAD\u路径,运行ruby和sudo似乎没有任何区别:(我可能有两个版本的ruby,尽管irb和ruby都在/usr/bin和/usr/local/bin中。加载路径完全不同。有没有办法改变这一点?听起来好像你有两个版本的ruby:一个在/usr/bin中,另一个在/usr/local/bin中。如果你使用ls-l/usr/local/bin/ruby/usr/bin/ruby,你可能会发现文件实际上是指向具有更长、更有趣的名称(如ruby1.8)的文件的简单链接,因此应该可以告诉您要使用哪一个。您需要确保在同一版本中运行irb和ruby。如果在这之后,您的加载路径仍然不同,请查看$RUBYLIB环境变量;这就是oad_路径应该来自于。啊,是的,irb是1.8.7,ruby是1.9.2…所以我想我可以找出1.8.7的ruby工具在哪里,并使用它,尽管我如何让irb使用1.9.2,让1.9.2使用所有的gems???我找到了1.8.7 ruby工具,它可以“要求excelsior”,但它会在其他一些行上阻塞,这不是不明确的e但也不方便:(知道我该如何让gems与较新的ruby一起工作吗?这个问题可能与多次安装有关。最后我通过安装rvm和设置一个新的ruby&gems环境来解决它。
puts RUBY_VERSION