HerokuでBASIC認証が必要なステージング環境を作る(Ruby on Rails)

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。

参考サイト

以下の記事を参考にしました。ありがとうございました!

<

「名前とメールアドレスを入力」または「ツイッター等のアカウントでログイン」することでコメントを残せます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

サイト内検索

up!