Railsアプリを本番環境とステージング環境にデプロイ~capistrano-ext


Railsアプリケーションを本番環境とステージング環境にデプロイするために、capitrano単体だと面倒くさそうだったのでcapistarano-extというgemをいれました。

$ [sudo] gem install capitrano-ext

config/deploy.rbに下記のrequireを追加します。

require "capistrano/ext/multistage"

deployというディレクトリを作成して、下記のファイル名のファイルを作成します。

config/deploy/production.rb
config/deploy/staging.rb

そうすると、productionとstagingという環境が作成されます。

それぞれのファイルにそれぞれの環境毎の設定が書けます。共通部分はconfig/deploy.rbに書いて、production.rb, staging.rbは差分だけ書くようにします。

ステージング環境にデプロイするときは下記の様に実行します。

$ cap staging deploy:update

これで、本番環境とステージング環境にデプロイできるようになったのですが、デフォルトだとrake db:migrate とかした際にRAILS_ENV=productionで実行してしまいます。RAILS_ENV=staging にしたい場合は deploy/staging.rbに下記を追加します。

set :rails_env, "staging"