你可以在每个命令上自动"在irb会话中"要求'ruby文件吗?

Dam*_*che 10 ruby irb

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

> require './file.rb'
> o = Object.new
> o.method
Run Code Online (Sandbox Code Playgroud)

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

> o.new_method
Run Code Online (Sandbox Code Playgroud)

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

bta*_*bta 19

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

def reload
    load 'myscript.rb'
    # Load any other necessary files here ...
end
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • @AndrewMarshall我们谈论的是irb,而不是Rails. (2认同)

mač*_*ček 8

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

〜/ .irbrc

require "~/somefile.rb"
Run Code Online (Sandbox Code Playgroud)

〜/ somefile.rb

puts "somefile loaded"
Run Code Online (Sandbox Code Playgroud)

终奌站

> irb
somefile loaded
irb(main):001:0> 
Run Code Online (Sandbox Code Playgroud)

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