0

我注意到默认的“部署”任务会在远程机器上进行资产预编译,这会产生以下不良影响:

  • 预编译期间奇怪的故障资产(在现场)
  • 配置中的错误导致停机并带有 500 响应代码
  • 需要很长时间的任务

我已经看到了这一点,当您没有任何要预编译的内容时,它不会导致您进行预编译,从而稍微缓解了这个问题:加速资产:使用 Rails 3.1/3.2 Capistrano 部署进行预编译

但必须有更好的解决方案。

有没有人试过这些:

  1. 始终部署到“暂存”位置,在那里您可以测试所有内容,然后添加某种cap enliven任务以某种方式告诉 Web 服务器前端开始使用另一个端口?(我可以通过编辑 nginx 并重新启动它来手动管理它,然后我可以通过 include和 cap 任务将它结合在一起upstream来自动化一点。)nginx.conf
  2. 在本地预编译,然后简单地通过 rsync 推送文件。我更喜欢#1,但这将是一个较小的步骤,可能会比当前行为更好的默认设置。

我错过了一些明显的东西吗?我是 Rails 资产 + Capistrano 部署的新手,但似乎部署的最佳实践并没有开箱即用。

4

1 回答 1

1

你可以:

  • 部署前预编译资产
  • 在后台编译它的服务器端
  • 留给delayed_job其他队列管理系统
于 2012-08-26T22:32:32.853 回答