【问题标题】:Ruby Strange Error红宝石奇怪的错误
【发布时间】:2011-04-29 15:12:54
【问题描述】:

每当我需要 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 上运行。请帮忙,这个问题很烦人!在此先感谢,呃。

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

【问题讨论】:

  • 我的文件?它存在于:home/elliot/programming/Ruby Projects/Graph Data Structure/Graph.rb

标签: ruby rubygems require ruby-1.9.1


【解决方案1】:

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

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

$: << '/my/lib/path'
require 'mylib'

【讨论】:

  • 谢谢,这解决了问题。抱歉我是菜鸟,我刚从 Windows XP 转到 Ubuntu,需要一点时间来适应,尤其是软件包安装系统!
【解决方案2】:

在 Ruby 1.9.2 中,我猜是您正在使用的版本,当前目录不再位于 $LOAD_PATH 中。如果你想require文件相对于require调用所在文件的路径,你应该使用require_relative

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

$LOAD_PATH << '.'

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

【讨论】:

    【解决方案3】:

    你在使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      • 2011-04-15
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多