herokuとテスト環境

こんばんわ。

どっかの記事で「herokuにはテスト環境がある」って見かけて
後回しにしてたんですが、よくよく調べてみると

ブランチ切ってherokuにテスト用のプロジェクト作って投げる

って流れでした
実際にやってみたよ


テスト用のブランチ作成 & 選択

% git branch
* master

% git branch test
% git branch
* master
  test

% git checkout test
Switched to branch 'test'


herokuにテスト用のプロジェクト登録

% heroku create APPNAME-test --remote test
Creating APPNAME-test... done, stack is cedar
http://APPNAME-test.herokuapp.com/ | git@heroku.com:APPNAME-test.git
Git remote test added

heroku createするときに--remoteオプションを追加すると
引数の名前でgit remote addしてくれる


環境変数ENVのRAILS_ENVの値をtestに変更する

% heroku config:add RAILS_ENV=test --app APPNAME-test
Setting config vars and restarting APPNAME-test... done, v3
RAILS_ENV: test

この値でtestサーバか否かを判断する


basic認証のusernameとpasswordを環境変数にセットする

heroku config:add BASIC_AUTH_USERNAME="foo" BASIC_AUTH_PASSWORD="bar" --app APPNAME-test


テスト環境にbasic認証をかける
Rails/app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery
  http_basic_authenticate_with :name => ENV['BASIC_AUTH_USERNAME'], :password => ENV['BASIC_AUTH_PASSWORD'] if Rails.env.test?
end

:nameを:usernameにしたら認証が弾かれてハマった


あとはプッシュすればできあがり

% git commit -am 'create test'
% git push test test


参考:
https://devcenter.heroku.com/articles/multiple-environments
ここ見るとstagingって名前使ってるけど
今回はtestにしてみました


おしまい。