トップ «前の日記(2014/05/28 (水) ) 最新 編集 RSS feed

HsbtDiary


2014/05/29 (木) [長年日記]

曇のち晴

rails4 での assets:precompile の高速化

rails4 で assets:precompile を有効にするようにしてから、デプロイ毎に precompile しているとデプロイ途中にデザインが崩れたり、そもそもデプロイ時間が5分以上かかるようになってしまってリリースの高速化も何もあったもんじゃないなーということで、技術的に解決しておいた。

rails3 の頃は turbo-sprockets とかあって、こういうのを入れれば変更されたファイルだけを precompile するので、こういう gem あるのかなあと探していたら、そもそも本体に組み込まれているというのを知った

http://yetimedia.tumblr.com/post/33320732456/moving-forward-with-the-rails-asset-pipeline

ようは public/assets 配下のファイルは tmp/cache/assets 配下にキャッシュを持っていてそれを参照して生成されるとのこと。これ実験してみたら、public/assets が存在しない場合はとにかく生成してしまうので capistrano 利用時に

  • public/assets も tmp,log のように symlink で共有(shared_children使う)
  • tmp はもちろん共有
  • 上記二つの symlink 生成後に assets:precompile を実行

とすることで大幅に短縮が可能になった。便利。