コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Railsのenvは production / test / developmentで動かそう

教訓的なメモ

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.rbconfig/environments/staging.rb の中身が結局一緒になり、二重運用となる。

また、stagingだけ適当したいシーンというのはソースコード上ではあまりなく、URLの差し向けさきやドメイン情報など、設定情報だけなので、ソースコード上で分岐をしていると develpmenttest のときまで気を使う必要が出てきてコードの可読性が下がる。

envは基本の3種で行こう

前述のとおり、 production とずれる実行環境は基本的に検証でも使わないので、 staging は使わず、基本の3環境でつかうようにしたほうが変な懸念は減る。

また、環境に依存する値はサーバーの環境変数に逃がして ENV['環境変数名'] などで取得できるようにすれば、ソースコード上でスイッチングする形ではなく、環境変数でスイッチングできる。

関連リンク