要求无法找到ruby文件

时间:2013-10-02 16:36:37

标签: ruby irb

我是Ruby的绝对初学者。我创建了一个小的ruby文件,当我运行命令ruby "methods.rb"时它运行良好。这意味着我在正确的目录中。

但是当我启动irb并运行命令require "methods.rb"时,我收到以下响应:

LoadError: cannot load such file -- methods.rb
    from /usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:53:in `require'
    from /usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:53:in `require'
    from (irb):1
    from /usr/local/rvm/rubies/ruby-1.9.3-p392/bin/irb:16:in `<main>'

4 个答案:

答案 0 :(得分:10)

Ruby默认情况下不会将当前路径添加到加载路径。

从irb,您可以尝试使用require "./methods.rb"

答案 1 :(得分:1)

我在目录so.rb中有一个名为/home/kirti/Ruby的ruby文件。所以首先从IRB我将使用Dir#chdir方法更改我当前的工作目录。然后我会调用#load#require方法。我的so.rb文件仅包含p hello行。

我会这样:

>> Dir.pwd
=> "/home/kirti"
>> Dir.chdir("/home/kirti/Ruby")
=> 0
>> Dir.pwd
=> "/home/kirti/Ruby"
>> load 'so.rb'
"hello"
=> true
>> require './so.rb'
"hello"
=> true

答案 2 :(得分:1)

要将正在执行ruby脚本的目录添加到加载路径,请使用:

$LOAD_PATH.unshift( File.join( File.dirname(__FILE__), '' ) ) 

或者如果您已将依赖项放在当前目录的“subdir”中:

$LOAD_PATH.unshift( File.join( File.dirname(__FILE__), 'subdir' ) ) 

答案 3 :(得分:1)

如果要在IRB中加载当前目录中的内容,可以执行以下操作:

irb -I.

注意那里的'点',表示当前目录。

如果您正在浏览该文件并对其进行更改,那么当您在IRB时,使用load而非`require作为load,您可以加载更改,{{1}将只允许文件一次。这意味着您无需退出IRB即可查看您的更改是如何受到影响的。

要了解您对IRB有哪些选择,您可以require这样做,如果您正在学习该工具,那么这是很好的。