Rails のアプリを書いていて、ホストによって routes.rb を切り替えたくなることがあります。 別にそんなのいらないんじゃないの? と思うのですが、お客様の要件なので嫌でも切り替えたくなってきます。自然の摂理ですね。 そんな時、Capistrano でどう書くべきかちょっと調べてみました。 ロールを使う Capistrano で標準的かつ一番最初に思いつく方法です。 ロール定義とタスク定義に条件を付けることで、ホストごとに実行するタスクを切り替えることができます。 namespace :app do desc "Switch routes.rb (for admin)" task :switch_admin_routes_rb, :roles => :admin_web do run get_routes_rb_switcher(:admin) end after "deploy