Rails
capistrano
capistrano2

Rails4なのにassets:precompileが遅い

More than 1 year has passed since last update.

地味にはまったのでメモ。

前提

  • Capistrano 2系

現象

  • ローカルとかでprecompileしてると2回目は早い。
  • でも、Capistranoでデプロイする時は毎回遅い。
  • assetsに変更がないのに遅い。
  • サーバにログインして、rake assets:precompileするとは普通に早い。

こんな状況だった。

結論としては、deploy.rbの設定を変更して

deploy.rb
set :shared_children, ['system', 'log', 'pids', 'tmp/cache']

という感じで、tmpshared配下に置くようにしたら二回目からは早くなった。

tmp/cache/assetsにも大事な情報があるみたい。

まぁ、以前の情報があるから早いというのはわかるんだけど、Capistranoのデフォルト設定ではないというのが少し気にかかっている…。

もっと良いやり方などがあるのだろうか…?

Capistrano 3系では、shared_childrenlinked_dirsに変わっているので

deploy.rb
set :linked_dirs, ['system', 'log', 'pids', 'tmp/cache']

とすれば良さそう。(@hidechaeさんご指摘ありがとうございます。)