「Herokuでステージング環境を作る – アインシュタインの電話番号」という記事を参考に実際にステージング環境を作ってみました。
踏んだ手順をメモしておきます!
Herokuに公開用とは別にステージング環境用のアプリを作る
heroku create ステージング環境用のアプリ名 --remote staging
–remote staging というオプションを付けることで、staging という名前でremote先が追加されます。(-は2つ必要なので注意!)
remote先を確認するには
git remote -v
というコマンドを使います。heroku という名前で公開用のアプリが、staging という名前でステージング環境用のアプリが登録されていればOK。
環境変数の設定
heroku config:set RAILS_ENV=staging --app ステージング環境用のアプリ名
これでステージング環境用のアプリでRailsの環境がstagingになりました。
確認するには以下のコマンドを使います。
heroku config --app ステージング環境用のアプリ名
間違えて本番用のアプリの環境変数を変えてしまわないように注意!(–appオプションを忘れずに!)
ステージング環境用の設定ファイルを整える
prodiction環境の設定をそのままstaging環境用にコピーしていきます。
config/environments/production.rbを同じ場所にstaging.rbという名前でコピー
cp config/environments/production.rb config/environments/staging.rb
database.ymlの編集
database.yml(私の環境だと config/locales にありました)の production: の部分をコピペして、production: を staging: に変えて保存。
Gemfileの編集
Gemfileの
group :production do
を
group :production, :staging do
に書き換え。
ステージング環境にBASIC認証をかける
これに関しては前回の記事に書いたので、前回の記事をまるっとコピペしておきますね!(前回の記事の意味……)
application_controller.rb に
http_basic_authenticate_with name: ENV['BASIC_AUTH_USERNAME'], password: ENV['BASIC_AUTH_PASSWORD'] if Rails.env.staging?
を追記します。
私の環境だとこうなります。
class ApplicationController < ActionController::Base protect_from_forgery http_basic_authenticate_with name: ENV['BASIC_AUTH_USERNAME'], password: ENV['BASIC_AUTH_PASSWORD'] if Rails.env.staging? end
これでstaging環境の全てのControllerにアクセスするのにBASIC認証が必要になります。
次に、環境変数にユーザー名とパスワードをセットします。
例えば、
heroku config:set BASIC_AUTH_USERNAME="user" BASIC_AUTH_PASSWORD="1234" --app ステージング環境にしたいアプリ名
とすれば、「ユーザー名:user パスワード:1234」と設定されます。
ステージング環境にデプロイ(push)
addとcommitを済ませてから
git push staging master
とすると、ステージング環境にデプロイされます。
公開用アプリにデプロイするときは
git push heroku master
とすればOK。
参考サイト
以下の記事を参考にしました。ありがとうございました!
- Herokuでステージング環境を作る – アインシュタインの電話番号
- railsでstaging環境を作る – CubicLouve
- Railsでstaging環境だけBasic認証する | もっとクールにプログラミング