【发布时间】:2012-08-02 23:34:48
【问题描述】:
我注意到默认的“部署”任务会在远程机器上进行资产预编译,这会产生以下不良影响:
- 在预编译期间出现奇怪的故障资产(在实时站点上)
- 配置错误导致停机,响应代码为 500
- 需要很长时间的任务
我已经看到了这一点,它通过在您没有任何要预编译的内容时不让您进行预编译来稍微缓解问题:Speed up assets:precompile with Rails 3.1/3.2 Capistrano deployment
但必须有更好的解决方案。
有没有人试过这些:
- 总是部署到“暂存”位置,在那里您可以测试所有内容,然后添加某种
cap enliven任务以某种方式告诉 Web 服务器前端开始使用其他端口? (我可以通过编辑 nginxupstream并重新启动它来手动管理它,然后我可以通过在nginx.conf中的包含和上限任务将其绑定在一起来自动化一点。) - 在本地预编译,然后通过 rsync 将文件推送过来。我更喜欢 #1,但这将是一个较小的步骤,可能会比当前行为更好的默认设置。
我是否遗漏了一些明显的东西?我是 Rails 资产 + Capistrano 部署的新手,但似乎没有开箱即用的最佳部署实践。
【问题讨论】:
标签: ruby-on-rails capistrano assets sprockets precompile