地味にはまったのでメモ。
前提
- 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さんご指摘ありがとうございます。)