![](/img/trans.png)
[英]Rails Capistrano precompile assets locally not loading on production
[英]How to deploy Rails 4 with Capistrano 2 and precompile assets locally
最近我将应用程序从Rails 3升级到Rails 4.在部署脚本中,我在本地预编译资产,然后将它们rsync到服务器。 在Rails 4中,资产管道现在生成manifest- < random > .json
而不是manifest.yml
。 由于清单文件的命名方式不同,因此会将多个manifest.json
文件添加到共享资源目录中。 然后,应用程序选择错误的清单文件,并提供旧资产。
我在一些github pull请求线程中已经阅读了与此相关的各种问题:
我的选择似乎是:
不要共享资产目录。
这会打破旧客户要求旧资源。
切换到在服务器上编译资产。
这会增加服务器的复杂性。
将清单文件移到共享资产目录之外。
我已经知道在Rails 4中删除了这个选项。
这个问题还有其他解决方案吗?
在查看标准的capistrano rails资产预编译任务后,我找到了最佳答案。 我向本地预编译任务添加了一个命令,该命令将旧资产清单作为asset_manifest.json移动到当前版本。 当上载新的清单时,这只留下一个清单。
run "mv -- #{shared_manifest_path.shellescape} #{current_path.to_s.shellescape}/assets_manifest#{File.extname(shared_manifest_path)}".compact
将manifest-.json移动到current_dir作为asset_manifest.json允许capistrano在回滚时恢复正确的清单文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.