你能';要求';irb会话中的ruby文件,在每个命令上自动执行?

你能';要求';irb会话中的ruby文件,在每个命令上自动执行?,ruby,irb,Ruby,Irb,我目前正在编辑一个文件,我正在使用irb测试api: > require './file.rb' > o = Object.new > o.method 然后我希望能够编辑file.rb,并能够立即看到更改。示例:假设我第一次需要file.rb时新的_方法不存在: > o.new_method 这将返回一个错误。是否有一种沙盒/开发人员模式或方法可以让我实现上述目标,而无需每次重新加载文件?无论如何,在第一个Require之后Require将不起作用。我假设在最坏的情

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

> require './file.rb'
> o = Object.new
> o.method
然后我希望能够编辑file.rb,并能够立即看到更改。示例:假设我第一次需要file.rb时新的_方法不存在:

> o.new_method

这将返回一个错误。是否有一种沙盒/开发人员模式或方法可以让我实现上述目标,而无需每次重新加载文件?无论如何,在第一个Require之后Require将不起作用。我假设在最坏的情况下,我必须使用load。我通常创建一个简单的函数,如下所示:

def reload
    load 'myscript.rb'
    # Load any other necessary files here ...
end
这样,一个简单的
重新加载
将重新导入我正在处理的所有脚本。这不是自动的,但这是我能想到的最接近的东西

当使用不存在的方法调用对象时,您可以重写
method\u missing
,以自动调用此函数。不过我自己从来没有试过,所以我不能给出任何具体的建议。如果您正在调用一个已经存在但只是被修改过的方法,那么它也不会有帮助


在我自己的懒惰中,我甚至将鼠标上的一个可编程按钮映射到“重新加载”键序列。当我使用
irb
时,只需一根小指的抽动就可以重新加载所有内容。因此,当我不使用
irb
时,我会无意中在文档中插入字符串“reload”(但这是一个完全不同的问题)。

这不会运行每个命令,但可以在每个irb会话中包含一个文件<代码>~/.irbrc
将在每次启动IRb会话时加载

~/.irbrc ~/somefile.rb 终端
~/.irbrc
在每次启动irb会话时都会被加载

那么
需要依赖项
如何从活动支持库中加载

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

然后,
require\u dependency
应该跟踪
myscript
文件中的更改并重新加载它。

注意,Rails提供了
reload
基本上做同样的事情。@AndrewMarshall我们谈论的是irb,而不是Rails。@Zenph我知道……这就是为什么它是一个“注释”,并强调这是做这类事情的一种常见方法。顺便说一句,使用
方法\u missing
是一个聪明但邪恶的想法。当然,它不能解决方法更改的问题。@AndrewMarshall抱歉。谢谢如果我不知道Rails控制台重新加载!方法我现在会很开心的。我已经测试过了,不幸的是它不起作用,也许其他人可以让它起作用。
puts "somefile loaded"
> irb
somefile loaded
irb(main):001:0> 
require 'active_support/dependencies' #load it at the beginning
require_dependency 'myscript.rb'