Rails资产管道:仅编译外部库一次以减少部署时间

时间:2015-03-18 14:04:17

标签: ruby-on-rails deployment continuous-integration asset-pipeline pre-compilation

我的Rails项目中有一堆外部javascript库,它们都包含在application.js中,因此它们会在每次部署到Heroku时进行预编译,Heroku运行很长时间。

您是否有任何建议如何减少资产编制时间,如果可能,不使用CDN。

感谢。

1 个答案:

答案 0 :(得分:0)

以下是我解决问题的步骤:

  1. 在适当的文件夹中添加外部资产,vendor / assets / javascripts或vendor / assets / stylesheets
  2. 将资产导入从应用程序清单移至app / assets / javascripts / external.js或app / assets / stylesheets / external.css.scss
  3. 将config / application.rb中的config.assets.precompile行更改为config.assets.precompile = ['external.js', 'external.css'](注意=而不是+ =)
  4. 运行rake资产:预编译
  5. 从public / assets中删除manifest.yml,因为它指示Heroku是否应该编译资产
  6. 将生成的public / assets文件夹推送到源代码管理
  7. 将config.assets.precompile行更改回原来的内容
  8. 这样,external.js和external.css被编译为localy,application.js和application.css在部署时编译。在我的情况下,部署时间快了两倍多。它确实需要一些手动工作,但可以作为rake实现。