我正在编写一个在 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/

10-13 04:47