我正在编写一个在 Rails 环境中使用的 Ruby 脚本,但我选择从 irb 运行它,因为重新加载 Rails 控制台可能会很痛苦。现在 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
最佳答案
在 irb 中, File.expand_path(__FILE__)}
只会返回 "#{path you ran irb from}/(irb)"
。这会创建一条实际上并不存在的路径。幸运的是,所有文件路径都相对于您运行 irb 的位置。这意味着您只需要:
load "lib/query.rb"
如果您想在实际文件中使用
__FILE__
,那很好,但不要指望它会在 irb 中生成有效路径。因为 irb 根本没有"file",所以它根本无法返回有效路径。此外,如果在通过 load 或 require 加载到 irb 的文件中使用,
__FILE__
也可以正常工作。因为这就是它的用途。关于ruby - 如何在 IRB 中重新加载脚本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4632090/