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


68

我正在编写在Rails环境中使用的Ruby脚本,但我选择从irb运行它,因为重新加载Rails控制台可能很麻烦。现在,从irb开始的等待时间要短得多,但是我不得不重新启动irb并在每次更改时都需要脚本,这让我感到困扰。有没有更简单的方法可以从irb重新加载脚本?

我在此线程中找到了一个方法,但这显然仅适用于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

Answers:


107

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

load "lib/query.rb"

如果要__FILE__在实际文件中使用,这很好,但是不要期望它会在irb中产生有效路径。因为irb根本没有“文件”,所以它根本无法返回有效路径。

另外,__FILE__如果用于通过load或require加载到irb的文件中,则可以正常工作。因为那是为了什么。



3

根据此链接,您需要加载文件,并且不要忘记扩展名。

这是在2号链接上也可以使用的更高级的版本,可能也对您有所帮助。

您可能想尝试弄清楚为什么Rails控制台对您不起作用。


Rails控制台加载太慢了。我尝试过,load但是它一直抱怨找不到文件,所以我把rb扩展名放在行尾。
picardo 2011年

如果此文件在您的lib目录中,则它将被加载并且您可以/应该使用它,除非它在启动时吐出错误。要在另一个文件中使用它,您只需要require NameOfModuleOrClass在该Rails应用程序中的一个文件中添加(在该查询文件中)。
pjammer 2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.