0

每当我需要 ruby​​ 或 irb 中的文件时,我都会收到此错误:

LoadError: no such file to load -- (insert any filename).rb
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from (irb):1
    from /usr/bin/irb1.9.1:12:in `<main>'

即使文件存在也会发生我正在使用 ruby​​1.9.1 并且据我所知,我还没有安装 ruby​​gems。我在 Ubuntu 10.10 Maverick Meerkat 上运行。请帮忙,这个问题很烦人!提前谢谢,嗯。

编辑:我忘了说无论文件在哪里,即使它在同一个目录中并且肯定存在,我总是会收到这个错误。

4

3 回答 3

4

在 Ruby 1.9.2(我猜是您正在使用的版本)中,当前目录不再位于$LOAD_PATH. 如果要require相对于调用所在文件的路径创建文件,require则应require_relative改用。

如果你真的想要require相对于当前目录的文件,那么你可以将当前目录添加到$LOAD_PATH这样的位置:

$LOAD_PATH << '.'

但是,进行此更改是有原因的,因此您不应轻易这样做。毕竟,这将使您的应用程序或多或少地随机运行,具体取决于您刚刚启动应用程序时所在的目录。更糟糕的是,如果攻击者可以让您从他控制的目录运行应用程序,他可以让您代表他执行任意代码。

于 2010-10-23T17:42:14.947 回答
1

Rubygems 默认安装在 ruby​​ 1.9 中。

检查您尝试加载的文件是否位于变量 $: 中列出的目录中,或在 require 中指定文件的完整路径。或者,将目录添加到 $: 明确:

$: << '/my/lib/path'
require 'mylib'
于 2010-10-23T16:55:08.020 回答
0

你用的是p0吗?我得到了很多。换句话说ruby-1.9.2-p0,尝试做一个未链接的(例如,不使用--with-baseruby)集./configure

curl ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p136.tar.gz | tar xz
cd ruby-1.9.2-p136
./configure
make -j2
sudo make install

从一开始就。对我来说,那个固定syck不存在(尽管出现了一个不同的问题:/yaml,,甚至stringiozlib

于 2010-12-28T04:49:43.310 回答