herokuのステージング環境を作る

幸いにもかんばんりすとコタれんを使ってくれている人がいるのでとても嬉しいのだけど安易に本番環境に変更を加えるのが恐い今日この頃。トラブってせっかく使ってくれている人に迷惑をかけてはいけない。

変更を加えた時はローカル環境でもちろん動作確認はしているけれど、厳密には heroku 上の環境と違うのでローカルで動いていてもいざ heroku にアップロードしたら動かないなんてこともよくある。そういう場合は heroku 環境に依存した問題であることが多いので解決まで多少時間がかかるし、本番環境がエラーを抱えたままだとプレッシャーになって落ち着いて解析ができなくなってしまう。本当に心臓に悪い。

そんなわけで今更ながら heroku 上に一旦動作を確認する為のステージング環境を作ってみたのでその覚書。
以下はコタれんの例。

ステージングの作成

  • heroku 上に作りたいアプリのステージング環境を作成。-staging など付加するとわかりやすいかも。
$ cd kotaren
$  heroku create kotaren-staging

stackを変更しつつステージング環境を作成するには

  • 本番環境が最新の stack を使っていない場合はステージング環境も本番と同じ stack で作っておいた方がいいと思う。
  • 本場環境の stack を調べておいて --stack を付加して create で実施。(例は bamboo-mri-1.9.2 を指定)
$  heroku create kotaren-staging --stack bamboo-mri-1.9.2

リモートブランチに追加

  • 作成したステージング環境のリポジトリをリモートブランチに追加する。作成時に表示される git@〜 を使用する。
$  git remote add staging git@heroku.com:kotaren-staging.git

アプリをアップロード

  • master の内容をそのままアップロードしたい場合は以下
$  git push staging master
  • branch をアップロードしたい場合は以下。
    • 大きな変更をする場合は大抵ブランチで作業していることが多いので master にマージする前に直接ブランチをステージング環境にアップロードして動作確認するのが良いと思う。
$  git push staging a-branch:master
  • ちなみにアップロードで失敗になったら -f で強制的に上げる方法もある
$  git push -f staging a-branch:master
  • migrate や seed は --app を使ってアプリ名を指定する
$  heroku rake db:migrate --app kotaren-staging
$  heroku rake db:seed --app kotaren-staging
  • 再起動しとく
$  heroku restart --app kotaren-staging

これでステージング環境に指定したブランチのアップロードが完了。思う存分動作確認できる。

使い終わったらメンテナンスモードに切り替える

  • 使わない時は外に晒さないようにメンテナンスモードをONにしとくといいかも。
$ heroku maintenance:on --app kotaren-staging

もう大きな変更をするのも恐くない!