最近我将应用程序从Rails 3升级到了Rails 4.在部署脚本中,我预先编译了本地资产,然后将它们rsync同步到服务器。在Rails 4中,资产管道现在生成manifest- <random> .json
而不是manifest.yml
。由于清单文件的命名方式不同,因此会将多个manifest.json
文件添加到共享资产目录。应用程序然后选择错误的清单文件,并提供旧资产。如何在Capistrano 2中部署Rails 4并在本地预编译资产
我看过一些github上拉请求的线程与此相关的各种问题:
- https://github.com/capistrano/capistrano/pull/412
- https://github.com/capistrano/capistrano/issues/210
- https://github.com/capistrano/capistrano/pull/281
我的选择似乎是:
不要共享资产目录。
这会破坏旧客户端的旧资源请求。
切换到编译服务器上的资产。
这会增加服务器的复杂性。
将清单文件移动到共享资产目录之外。
我后来了解到,这个选项是Rails中取出4
对于这个问题还有其他的解决方案?
你能显示你的任务的完整来源吗? –
@AndreiVaranovich https://gist.github.com/codingfoo/9494072 – codingFoo