Circle CI でも travis-ci でもなんでもいいんですが、とにかくデプロイ用に用意する assets:precompile を早くしたいというあなたむけの記事です。
bin/rake assets:precompile
は public/assets
以下に配信用の assets を吐き出し、 manifest.json なども配置されますが、この public/assets
ディレクトリをキャッシュするだけでは、次回の bin/rake assets:precompile
は早く__なりません__。
継続的な bin/rake assets:precompile
の実行を高速化するには public/assets
だけでなく、 tmp/cache/assets
も保存しておき、 assets:precompile
実行前に再配置しておく必要があります。
これにドはまりすると『CI 一回実行するのに、 assets:precompile
だけで8分かかる……』というような悲しい Tweet をするハメになるので気をつけてください。特に、 browserify-rails
などを使っている時に強烈に効きます。
僕の所はこれやるだけで8分かかってた assets:precompile
が(変更がなければ)3秒で終わるようになったので、はちゃめちゃに効くと思います。
騙されたと思ってやってみてください。
ちなみに Circle CI で上記のことを実現するには、 circle.yml
に
dependencies:
cache_directories:
- 'public/assets'
- 'tmp/cache/assets'
と書き足すといいです。