您是否可以在每个命令上自动“请求”irb会话中的ruby文件?

我正在编辑一个文件,我正在使用irb来测试api:

> require './file.rb' > o = Object.new > o.method 

然后我希望能够编辑file.rb,并能够立即看到更改。 示例:假设我第一次需要file.rb时new_method不存在:

 > o.new_method 

哪个会返回错误。 是否有沙盒/开发人员模式或方法,我可以实现上述内容而无需每次都重新加载文件? 无论如何,在第一次要求后,要求将无法工作。 我假设最坏的情况我不得不使用负载。

我通常会创建一个这样的简单函数:

 def reload load 'myscript.rb' # Load any other necessary files here ... end 

有了它,一个简单的reload将重新导入我正在处理的所有脚本。 它不是自动的,但它是我能够想出的最接近的东西。

当使用不存在的方法调用对象时,您可以覆盖method_missing以自动调用此函数。 我自己从未尝试过,所以我不能给出任何具体的建议。 如果您正在调用已经存在但只是被修改过的方法,那也无济于事。

在我自己的懒惰中,我已经将鼠标上的一个可编程按钮映射到按键序列“reload ”。 当我使用irb ,所需要的只是一个小手指的抽搐来重新加载所有东西。 因此,当我使用irb ,我最终会无意中插入文档中的字符串“reload”(但这完全是另一个问题)。

这不会运行每个命令,但您可以在每个IRb会话中包含一个文件。 每次启动IRb会话时都会加载~/.irbrc

〜/ .irbrc

 require "~/somefile.rb" 

〜/ somefile.rb

 puts "somefile loaded" 

终奌站

 > irb somefile loaded irb(main):001:0> 

每次启动irb会话时都会加载~/.irbrc

那么ActiveSupport库中的require_dependency怎么样?

 require 'active_support/dependencies' #load it at the beginning require_dependency 'myscript.rb' 

然后require_dependency应跟踪myscript文件中的更改并重新加载它。