我是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>'
答案 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
这样做,如果您正在学习该工具,那么这是很好的。