无法找到ruby文件

我是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 `' 

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

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

我在目录/home/kirti/Ruby有一个名为so.rb的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 

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

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

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

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

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

 irb -I. 

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

如果您正在探索并在该文件中进行更改,那么当您使用IRB时,请使用load而不是`require as load ,您可以加载更改,而require将只允许文件一次。 这意味着您无需退出IRB即可查看更改受到的影响。

要找出IRB的选项,你可以使用irb --help ,如果你正在学习这个工具,这是很好的做法。