如何在Capistrano 2上部署Rails 4并在本地预编译资源

最近,我将应用程序从Rails 3升级到了Rails 4.在部署脚本中,我预先编译了本地资产,然后将它们rsync到服务器(s)。 在Rails 4中,资产管道现在生成manifest- < random > .json而不是manifest.yml 。 由于清单文件的命名方式不同,因此会将多个manifest.json文件添加到共享资产目录。 应用程序然后选择错误的清单文件,并提供旧资产。

我在一些github拉请求线程中已经阅读了与此相关的各种问题:

  • https://github.com/capistrano/capistrano/pull/412
  • https://github.com/capistrano/capistrano/issues/210
  • https://github.com/capistrano/capistrano/pull/281
  • 我的选择似乎是:

  • 不要共享资产目录。

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

  • 切换到编译服务器上的资产。

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

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

    我从那以后就知道这个选项在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

    下一篇: Capistrano, Rails 3.2, standard recipes?