地味にはまったのでメモ。
前提
- Capistrano 2系
現象
- ローカルとかで
precompileしてると2回目は早い。 - でも、
Capistranoでデプロイする時は毎回遅い。 -
assetsに変更がないのに遅い。 - サーバにログインして、
rake assets:precompileするとは普通に早い。
こんな状況だった。
結論としては、deploy.rbの設定を変更して
deploy.rb
set :shared_children, ['system', 'log', 'pids', 'tmp/cache']
という感じで、tmpもshared配下に置くようにしたら二回目からは早くなった。
tmp/cache/assetsにも大事な情報があるみたい。
まぁ、以前の情報があるから早いというのはわかるんだけど、Capistranoのデフォルト設定ではないというのが少し気にかかっている…。
もっと良いやり方などがあるのだろうか…?
Capistrano 3系では、shared_childrenはlinked_dirsに変わっているので
deploy.rb
set :linked_dirs, ['system', 'log', 'pids', 'tmp/cache']
とすれば良さそう。(@hidechaeさんご指摘ありがとうございます。)