如何在IRB中重新加载脚本?

时间:2011-01-08 02:55:18

标签: ruby irb

我正在编写一个用于Rails环境的Ruby脚本,但是我选择从irb运行它,因为重新加载Rails控制台可能会很麻烦。现在irb的等待时间要短得多,但是我不得不重新启动irb并且每当我做出改变时都需要脚本。有没有更简单的方法从irb重新加载脚本?

我在this thread中找到了一个方法,但这显然仅适用于gem文件。我的require语句看起来像这样

 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

4 个答案:

答案 0 :(得分:95)

在irb中,File.expand_path(__FILE__)}只会返回"#{path you ran irb from}/(irb)"。这会创建一个实际上不存在的路径。幸运的是,所有文件路径都与你运行irb的位置有关。这意味着您只需要:

load "lib/query.rb"

如果你想在实际文件中使用__FILE__,那很好,但不要指望它在irb中产生有效路径。因为irb根本没有“文件”,所以它根本不能返回有效路径。

此外,如果在通过load或require加载到irb的文件中使用__FILE__,它将正常工作。因为它有点像它。

答案 1 :(得分:38)

不要使用require,请尝试load。前者仅加载一次源文件,而后者每次调用时都加载它。

答案 2 :(得分:3)

根据this link,您需要加载文件,不要忘记扩展名。

以下是this link number 2使用的更高级版本,对您也有帮助。

你可能想尝试一下为什么你的rails控制台不适合你。

答案 3 :(得分:1)

我认为load正是您所寻找的。