如何在Capistrano 2上部署Rails 4并在本地预编译资源
最近,我将应用程序从Rails 3升级到了Rails 4.在部署脚本中,我预先编译了本地资产,然后将它们rsync到服务器(s)。 在Rails 4中,资产管道现在生成manifest- < random > .json
而不是manifest.yml
。 由于清单文件的命名方式不同,因此会将多个manifest.json
文件添加到共享资产目录。 应用程序然后选择错误的清单文件,并提供旧资产。
我在一些github拉请求线程中已经阅读了与此相关的各种问题:
我的选择似乎是:
不要共享资产目录。
这会打破旧客户要求的旧资源。
切换到编译服务器上的资产。
这会增加服务器的复杂性。
将清单文件移到共享资产目录之外。
我从那以后就知道这个选项在Rails 4中被删除了。
这个问题还有其他解决方案吗?
在查看标准Capistrano Rail资产预先编制任务后,我找到了最佳答案。 我向本地预编译任务添加了一个命令,将旧资产清单作为asset_manifest.json移动到当前版本。 新版上传时只剩下一个清单。
run "mv -- #{shared_manifest_path.shellescape} #{current_path.to_s.shellescape}/assets_manifest#{File.extname(shared_manifest_path)}".compact
将manifest-.json作为asset_manifest.json移动到current_dir允许capistrano在回滚时恢复正确的清单文件。
链接地址: http://www.djcxy.com/p/81101.html上一篇: How to deploy Rails 4 with Capistrano 2 and precompile assets locally