部署在 Pow 上的 Rails 应用程序在 /lib 目录中发生更改时无法重新加载

5

我经过多次谷歌搜索后,尝试将以下两个内容添加到我的配置文件中,但重载仍未生效:

config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]

我在 /lib 目录下修改了文件,但是在 Pow 中刷新页面并没有重新加载这些更改。

我漏掉了什么?


你是在刷新浏览器还是重启应用程序? - veritas1
@veritas1 刷新并重新启动它(例如通过 touch tmp/restart.txt)当然可以解决这个问题。 - user1749366
1个回答

7

在/lib文件夹中更改文件后,您需要重新启动pow,因为Rails在此处启动时初始化对象,并在启动后不再加载它们(因此在服务器运行时进行更改不会有任何影响)。为了克服这个问题,您有几个选项:

  1. 您可以考虑使用require_dependency

  2. 您可以通过触摸restart.txt文件来重新启动Pow:touch ~/.pow/restart.txt

  3. 如果您经常更改lib文件夹,则可以添加anvil以轻松处理您的重启问题。

  4. 如果您不想这样做,只需将类添加到/app路径中的一个新文件夹即可。


但是这不是autoload_paths的作用吗?告诉Rails需要重新加载什么? - user1749366
这是自动加载而不是自动重新加载。如果你真的想要,这里有一些黑客技巧:https://dev59.com/8XA75IYBdhLWcg3wdIz7 - Simpleton

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