2011-01-08 25 views
54

我正在寫Rails環境中使用的Ruby腳本,但我選擇從irb運行它,因爲重新加載Rails控制檯可能會很痛苦。現在irb的等待時間要短得多,但我很困擾我必須重新啓動irb並在每次進行更改時都要求腳本。有沒有更簡單的方式從irb重新加載腳本?如何在IRB中重新加載腳本?

我在this thread找到了一個方法,但是這隻適用於gem文件。我需要聲明看起來像這樣

require "#{File.expand_path(__FILE__)}/../lib/query" 

編輯:嘗試過load而非require,我仍然無法得到它的工作。我無法停止這些錯誤。

ruby-1.9.2-p0 > load "#{File.expand_path(__FILE__)}/../lib/query.rb" 
LoadError: no such file to load -- /Users/newuser/Dropbox/Sites/rails/hacknyc/(irb)/../lib/query.rb 

回答

84

在irb中,File.expand_path(__FILE__)}只會返回"#{path you ran irb from}/(irb)"。這創建了一條實際上不存在的路徑。幸運的是,所有文件路徑都與您運行irb的位置有關。這意味着你需要的是:

load "lib/query.rb" 

如果你想在實際文件中使用__FILE__,這很好,但不要指望它產生IRB的有效路徑。由於irb根本沒有「文件」,因此根本無法返回有效的路徑。

此外,__FILE__將工作正常,如果在通過加載或需要加載到irb文件中使用。因爲這是有點什麼。

34

而不是使用require,儘量load。前者只加載一次源文件,後者每次調用時加載它。

+1

我嘗試了加載,但它一直抱怨它找不到該文件,並且我確實在該行的末尾添加了rb擴展名。 – picardo 2011-01-08 10:45:27

+0

作爲參考,看看「Ruby需要VS負載VS包括VS擴展」 - http://ionrails.com/2009/09/19/ruby_require-vs-load-vs-include-vs-extend/ – Purplejacket 2012-06-01 22:13:59

1

我認爲load是你在找什麼。

+1

我試過`加載「,但它一直抱怨說它找不到該文件,並且我確實在該行的末尾放置了rb擴展名。 – picardo 2011-01-08 10:43:05

3

根據this link你需要加載你的文件,不要忘記延長。

這裏是一個發燒友的版本在this link number 2也使用這可能是對你也有幫助。

你可能想嘗試哈希爲什麼你導軌控制檯是不是爲你工作,但。