更好的Rails 3资产处理`cap deploy`

时间:2012-08-05 23:00:00

标签: ruby-on-rails capistrano assets sprockets precompile

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

  • 在预编译期间(在实际网站上)奇怪的小故障资产
  • 配置错误导致500响应代码的停机时间
  • 需要很长时间的任务

我已经看到了这一点,当你没有任何预编译的东西时,它不会导致你预先编译,从而缓解了这个问题:Speed up assets:precompile with Rails 3.1/3.2 Capistrano deployment

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

有没有人尝试过这些:

  1. 始终部署到“临时”位置,您可以在其中测试所有内容,然后添加某种cap enliven任务,以某种方式告诉Web服务器前端开始使用其他端口? (我可以通过编辑nginx upstream并重新启动它来手动管理它,然后我可以使用nginx.conf中的include和cap任务自动执行此操作以将其绑定在一起。)
  2. 在本地预编译然后只需通过rsync推送文件。我更喜欢#1,但这可能是一个较小的步骤,可能比当前行为更好地作为默认值。
  3. 我错过了一些明显的东西吗?我是Rails资产+ Capistrano部署的新手,但似乎没有开箱即用的最佳部署方法。

1 个答案:

答案 0 :(得分:1)

你可以:

  • 部署前预编译资产
  • 在后台编译服务器端
  • 将其留给delayed_job或其他队列管理系统