Rails控制台:多次运行Ruby文件

10

Rails提供了一个非常有用的控制台('script/console')。

我编写了一个ruby文件,并在控制台中使用require foo.rb来运行它。

第一次运行很好,但第二次及以后的require foo.rb不会再次运行我的脚本(require不会重新加载它)。

您有什么技巧或建议吗?

2个回答

17

require 用于加载扩展 - 因此一旦代码执行,扩展就存在于您的环境中,但是后续的 requires 不会有任何作用,因为任务已经完成。

load 则每次都会加载和执行代码。

如先前提到的,如果您只想运行脚本并且需要 Rails 环境,则考虑使用 script/runner。


3
请确保使用完整的文件名进行加载(require不需要这样做;)) - djburdick

2
你可能应该尝试在脚本中加载你的 Rails 环境或者使用 rake。还可以考虑使用 script/runner。这里是一个旧的、可能已经过时的使用 Rails 环境的示例(这里),这里有一个更近期和详细的版本(这里)。另外,这里还有一个 Stack Overflow 的答案(链接)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接