繁体   English   中英

如何使用Capistrano 2部署Rails 4并在本地预编译资产

[英]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请求线程中已经阅读了与此相关的各种问题:

我的选择似乎是:

  1. 不要共享资产目录。

    这会打破旧客户要求旧资源。

  2. 切换到在服务器上编译资产。

    这会增加服务器的复杂性。

  3. 将清单文件移到共享资产目录之外。

    我已经知道在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM