Heroku rails 3.1 app - 在本地编译资产与在slug编译期间编译资产

Dty*_*Dty 13 ruby ruby-on-rails heroku ruby-on-rails-3 asset-pipeline

我正在Heroku Cedar堆栈上运行rails 3.1 app,它支持资产管道.Heroku 列出了3种编译资产的方法

  1. 在本地编译资产.
  2. 在slug编译期间编译资产.
  3. 在运行时编译资产.

显然#3对性能有害,而Heroku文档也建议不要这样做.但我不确定#1和#2之间哪个更好.

#1要求您运行rake assets:precompilepublic/assets在git中包含您的文件夹.你的slug会更大,但我认为部署网站的停机时间会更短.但更大的段塞大小意味着应用程序启动速度较慢,所以也许这是一个洗牌.

由于在Heroku端进行预编译,#2将使部署更新需要更长的时间.但是,你会有一个较小的slu and,而且管理/记忆的次数较少.

我的问题是 - 哪种选择(#1或#2)最适合生产,为什么?

到目前为止它看起来像选项#2但我想确保我不会忽视某些东西.

Jef*_*amm 7

我在这里解决了一些问题和一个大问题:Rails 3.1.1资产管道Heroku缓存问题

我更喜欢#2,如果它适用于我,所以我不必检查编译资产,这只会使git存储库膨胀.

在slug编译期间编译资产不会导致任何额外的停机时间,因为您的现有应用程序将保持不变,直到slug编译完成,所以不用担心.

如果你能让它适合你,我的建议是#2.如果你最终以w /#1结束,那么最好的做法是在rake资产之前使用git rm -r public/assets:预编译以确保没有残留物.