从 Rails 控制台重新加载帮助程序

Posted

技术标签:

【中文标题】从 Rails 控制台重新加载帮助程序【英文标题】:Reload Helper from Rails Console 【发布时间】:2011-11-27 21:16:35 【问题描述】:

我在 Rails 3 中从 Rails 控制台调用辅助方法,如下所示:

>> helper.my_method(parameter)
>> #=> some result

但是,如果我更改了辅助方法,当我再次调用相同的方法时,这些更改不会反映出来。我必须 exit 并运行 rails console 才能看到对辅助方法的更改生效。

【问题讨论】:

【参考方案1】:

实际上,helper 是一个实例化的对象,用于记忆 ApplicationController 助手,当您调用 reload! 时不会重新加载它,至少在 Rails 4 中是这样。您可以通过在控制台中调用 ApplicationController.helpers.my_method(parameter) 来解决这个问题。编辑帮助程序时仍需要使用reload!,但它会重新加载,与helper 不同。

【讨论】:

Rails 5.0 的备忘录 has been removed。【参考方案2】:

您只需要运行reload! 并且大多数 类将被重新加载,包括您的助手。

【讨论】:

【参考方案3】:

在两次遇到此问题并放弃后,我想出了如何在不退出控制台且不通过ApplicationController.helpers.my_method(parameter) 调用它们的情况下重新加载帮助程序。

在调用reload! 后,再次包含您的助手(include MyHelper),它将包含您最近更改的助手。

【讨论】:

以上是关于从 Rails 控制台重新加载帮助程序的主要内容,如果未能解决你的问题,请参考以下文章

辅助方法不会通过 rails 控制台中的 `reload!` 重新加载

Rails 控制器方法在 Ajax 调用后不重新加载页面

Ruby on Rails - 需要重新加载模型时的不一致性?

如果从不同的视图控制器按下返回,则重新加载而不重新加载。迅速

从控制器重新加载配置(asp.net 核心应用程序)

Rails:每次使用控制台更改代码时重新启动服务器