特定のサーバにCapistranoデプロイする時、任意のcallbackを削除する


たとえば、バッチサーバにdeployする時はassetsで付与されたタスクを無効化する。

config/deploy/batch.rb
callbacks[:before].delete_if{|c| c.source == "deploy:assets:symlink"}
callbacks[:after].delete_if{|c| c.source == "deploy:assets:precompile"}

そもそも不用なcallbackをロードしない

Capfileで

load 'deploy/assets'

とする代わりに、assetsを必要とするサーバでのみload 'deploy/assets'してやるという解決策もあるかもしれない。

今回はassetsを有効化するサーバの数に対してバッチサーバの方が小数であったためこの方法を使った。