LoginSignup
0
0

More than 1 year has passed since last update.

Heroku + MySQL + Rails6.0でstaging環境を用意する。

Last updated at Posted at 2022-01-09

背景

個人アプリを開発していて、現状はローカル環境と本番環境しか用意していなかった。
本来であればstaging環境で確認後、本番環境にデプロイする流れが望ましいため、staging環境を準備することにした。

前提

  • Herokuで本番環境が用意できている。

手順

staging環境の作成

heroku create --remote staging

これでstaging環境が作成される。

参考記事

本番環境の環境変数をインポート + stagingの環境変数にセットする。

heroku config -s -a "本番環境のアプリ名" > envvars.txt
cat envvars.txt | tr '\n' ' ' | xargs heroku config:set -a "staging環境のアプリ名"

CLEARDB_DATABASE_URL、DATABASE_URL、DB_NAME、DB_USERNAME、DB_PASSWORD、DB_HOSTNAMEもコピーしてしまっているが、そちらは削除しておく。

参考記事

cat envvars.txt | tr '\n' ' ' | xargsの解説

cat envvars.txtでインポートした本番環境の環境変数のファイルを出力する。
tr '\n' ' 'でennvars.txtの改行部分を空白に置換する。
xargsコマンドでcat envvars.txt | tr '\n' ' 'の結果を受け取って、次のコマンドの引数に渡してくれる。

参考記事

MySQLアドオンを追加する。 + stagingの環境変数の修正

heroku addons:create cleardb:ignite --remote staging

CLEARDB_DATABASE_URLから、
DATABASE_URL、DB_NAME、DB_USERNAME、DB_PASSWORD、DB_HOSTNAMEの環境変数をセットする。

例: heroku config:set DB_NAME=xxxx --remote staging

RAILS_ENVRACK_ENVをstagingに変更する。

heroku config:add RACK_ENV=staging --remote staging
heroku config:add RAILS_ENV=staging --remote staging

staging.rbを用意する。

cp config/environments/production.rb config/environments/staging.rb
staging.rb
# 下記のように修正
config.action_mailer.default_url_options = { protocol: 'https', host: 'stagingのアプリ名' }

staging環境にデプロイする。

git push staging master

staging環境のDBを作成する。

heroku run rake db:migrate --remote staging

staging環境のアプリ名を変更する。

heroku apps:rename "変更したいアプリ名" --remote staging

参考記事

以上で完了。

最後に

今回は取り急ぎstaging環境を用意することだけを行ったが、今後は

  • プルリクを出したら自動的にstaging環境にデプロイされるようにする。
  • 本番環境のデータと1日おきに同期する。

などといったことにも挑戦していきたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0