Heroku で複数の環境( production, staging など)を使い分けたいときー
heroku gem が入っているのは当然として。heroku_san っていう複数環境マネジメントアプリがあるんですが、Stack が最新の cedar じゃなくて、デフォルトの bamboo-mri-1.9.2 になっちゃうので序盤は手動でやることにしました。
heroku create の際、--remote オプションを付けます。そうすると .git/config に各環境のリポジトリが登録された上 Heroku のセットアップができます。
$ heroku create appname-staging --remote staging --stack cedar $ heroku create appname --remote production --stack cedar
上の例では、http://appname-staging.herokuapp.com/ と http://appname.herokuapp.com/ が用意されます。
んで、以後、heroku コマンドを実行するときは、どの環境・アプリかわかるように、--app オプションを付けます。
$ heroku addons:add mongolab:starter --app appname-staging $ heroku addons:add mongolab:small --app appname
こんな風に。
全環境いっぺんにコントロールしたい時は heroku_san を使ったらいいんじゃないすかね。詳しくは、README を御覧ください。
$ rake heroku:create_config
production: app: appname config: BUNDLE_WITHOUT: "development:test" GOOGLE_ANALYTICS: "UA-12345678-1" staging: app: appname-staging config: &default BUNDLE_WITHOUT: "development:test"
あ、注意して欲しいのは、README では、rake heroku:create やることになってますが、Heroku の方はセットアップできてますので飛ばしてください。
$ rake all heroku:rack_env $ rake all heroku:config
として、環境変数をセット。
全デプロイ:
$ rake all deploy
などなど。