2013-10-02 76 views
6

我是絕對的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>' 

回答

10

Ruby沒有默認當前路徑添加到負載路徑。

從irb開始,您可以嘗試使用require "./methods.rb"

1

我在目錄/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 
1

添加您從負載路徑使用執行Ruby腳本的目錄:

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

,或者如果你已經把你的依賴關係「當前目錄的子目錄:

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

如果你打算在IRB中加載你的內容可以這樣做:

irb -I. 

注意'點'那裏,表示當前目錄。

如果你正在探索,使在該文件中的變化,當你在IRB,使用load而不是`requireload讓您加載更改,require將只允許一次所需的文件。這意味着您不需要退出IRB以查看您的更改如何受到影響。

要了解IRB有哪些選項,您可以做irb --help,如果您正在學習該工具,那麼該做法很好。