教訓的なメモ
Railsの基本的なenvironment(env)
Railsでデフォルトで存在するのは以下の3つ
- produciton(本番)
- test(テスト/Rspecなどの実行用)
- development(開発環境)
envは増やせる、が
このenv、増やすことができる。根本的には config/environments/
配下に付け足したいenvironment名を hoge.rb
のように継ぎ足す。
ステージング用にenv増やしたいなーと思ったら staging.rb
を配置すればOK。中身は他のものどうように起動時の設定を書き足す。
envを増やしたくなる場面
検証用環境としてステージング環境を作りたい場合、本番と検証用環境を切り分けるためにproduction?
と同じ形で staging?
とかやりたくなる瞬間があり、それに合わせてコードをかき分けたいことがあるので、それを実現するために使いたくなるケースがある。
envは増やすとつらくなるとき
概ね、本番環境とステージング環境は実行環境としては合わせたい場合が多く、config/environments/production.rb
と config/environments/staging.rb
の中身が結局一緒になり、二重運用となる。
また、stagingだけ適当したいシーンというのはソースコード上ではあまりなく、URLの差し向けさきやドメイン情報など、設定情報だけなので、ソースコード上で分岐をしていると develpment
や test
のときまで気を使う必要が出てきてコードの可読性が下がる。
envは基本の3種で行こう
前述のとおり、 production
とずれる実行環境は基本的に検証でも使わないので、 staging
は使わず、基本の3環境でつかうようにしたほうが変な懸念は減る。
また、環境に依存する値はサーバーの環境変数に逃がして ENV['環境変数名']
などで取得できるようにすれば、ソースコード上でスイッチングする形ではなく、環境変数でスイッチングできる。