【发布时间】:2012-12-21 13:44:58
【问题描述】:
所以问题基本上归结为:
如何在生产 Rails 环境中有效地处理不断变化的资产,而无需重新启动服务器?
我们遇到的问题是,我们必须重新启动运行应用程序的瘦服务器才能提供更新的 javascript 文件。
一些背景:
现在,我们每小时一次将来自几个长时间运行的任务的数据生成到 javascript 文件中,以便我们可以在 Rails 应用程序中使用它。
需要明确的是,我们更新/覆盖现有文件,而不是添加新文件。
生成后,我们运行这些命令以重新预编译所有资产。
bundle exec rake assets:precompile
bundle exec rake rails_group=assets assets:clean RAILS_ENV=production
在清除浏览器缓存并重新加载页面后,我们仍在使用旧资产。
你们有过类似的经历吗?你做了什么来解决它?
PS。祝大家节日快乐!
【问题讨论】:
-
在您的应用程序文件夹中的服务器外壳上执行
touch tmp/restart.txt。 -
触摸 tmp/restart 只对乘客有效,对瘦无效
-
您的资产是指纹还是您在资产 URL 的查询字符串中使用时间戳? (guides.rubyonrails.org/…)如果你不使用这些技术,那么你得到的是陈旧的资产似乎是合乎逻辑的。您可能会即时打开编译,不要每小时运行一次预编译,只需进行清理
-
@systho,您实际上提出了一个非常有效的观点,实际上我什至没有考虑禁用资产管道。这可能会解决问题。
标签: ruby-on-rails ruby-on-rails-3.2 asset-pipeline thin