capistranoでデプロイした後に作業は絶対したくない!
capistranoは便利なのですが、さすがに全部やってくれるわけではないので、
私の環境(sarge+apache2+mod_fcgid)では
以上の3ファイルが本番と開発用では異なります。
また、apache用の公開ディレクトリも用意する必要があります。
そのため、taskを自作することにしました。
capistranoをインストールし、deploy.rbを作っておきます。
以下をdeploy.rbに追加しておきます。
desc "Deploy after" task :deploy_after, :roles => [:app, :db, :web] do public_dir="/var/www/schedule" run "rm -fr #{public_dir}" run "cp -fr #{current_path}/public #{public_dir}" run "cp #{public_dir}/.htaccess.production #{public_dir}/.htaccess" run "cp #{public_dir}/dispatch.fcgi.production #{public_dir}/dispatch.fcgi" run "cp #{current_path}/config/environment.rb.production #{current_path}/confi g/environment.rb" end
適切に.htaccess.production、dispatch.fcgi.production、environment.rb.productionを
用意して本番用に書き換えます。environment.rb.productionはRAILS_ENVをproductionに
するためだけに用意したものです。
順番に解説するとapacheの公開用ディレクトリをセットし、
公開用ディレクトリを一旦消します。
公開用ディレクトリをコピーします。
3つのファイルを上書きでコピーします。
これだけで終わりです。
rake remote:exec ACTION=deploy_after
これでOKです。
実際は
rake deploy rake remote:exec ACTION=deploy_after rake remote:migrate
ですね。一番最初は当然rake remote:setupも必要です。