【发布时间】:2015-01-02 08:32:12
【问题描述】:
我们有一个用例,我们需要在部署/重启过程之外运行 assets:precompile,因此最好不必重启 Rails 服务器进程。这在乘客环境中是否可行?
我一直在努力尝试 Rake 任务中的一堆东西并摆弄 Rails.application.config.assets 的东西,但是除了使用 /usr/bin/env touch ~/project/current/tmp/restart.txt 重新启动Passenger 之外,没有什么能让应用程序获取对摘要的更改
【问题讨论】:
-
如果您使用乘客,您可以
touch /tmp/restart.txt吗? -
我应该澄清一下,当我说“重新启动服务器”时,我正试图避免这种情况。为了清楚起见,我将编辑帖子。我希望能够将新资产摘要填充到每个正在运行的实例中,但我想不出一种可靠的方法。
-
hmm... 只是胡思乱想,但我想知道您是否可以更新 manifest.yml 文件,然后告诉 sprockets 刷新它。清单将告诉
stylesheet_link_tag'main' 所在的位置。 -
任何想法如何告诉链轮刷新它?我尝试构建一个 rake 任务,该任务将遍历新创建的 manifest.yml 文件并将其插入到每个根据 Rails.application.config.assets.digests[file] 记录中,但这并没有做任何事情,这使得有意义,因为 rake 任务中的“sprockets”实例与在每个 puppet'ized 实例中运行的实例不同。我曾想过尝试在 redis 中添加某种标志,但后来陷入了“我如何确定每个服务器上的每个实例都正确捕获更新”的问题
-
我知道了。这是一个艰难的。我遇到了this article也许你可以一起破解livereload,和/或守卫看目录。我希望我能给你一个可靠的答案,但似乎是一个棘手的问题。
标签: ruby-on-rails-3 rake passenger sprockets capistrano3