Araoの技術ブログ

見習いエンジニアのAraoが、学んだことなどを書いたりするブログです。

Ruby on Railsの環境の確認と設定の方法

Ruby on Railsの環境の確認方法と設定方法を知ったので、ほぼ自分用のメモとしてブログ記事にしておきます。
Rubyの経験も浅い僕ですが、最近はRailsを触っております。当然Railsに関しては素人なので、まだまだわからないことも多いのですが、APIを実装し、サーバを起動して、curlコマンドでAPIへのアクセスを再現してテストをする、というところをなんとか頑張っている最中です。
勉強のために一冊本を買ったので、実作業だけでなく、きちんと勉強も進めていきたいところです。

さて、本題に入ります。Railsの環境についてです。
自分が今実装を進めているRailsアプリケーションには、production、development、testの3種類の環境があります。
調べてみると、productionは本番環境、developmentが開発環境、testがテストを実行するとき用の環境、だそうです。
そこで、productionに本番で使用する定数を、developmentとtestに本番では使用しないテスト用の定数を、それぞれ設定しました。具体的には以下のような感じです。

config/settings/production.yml

hogehoge:
  fugafuga: 'http://production.com'

config/settings/development.yml, config/settings/test.yml

hogehoge:
  fugafuga: 'http://development.com'

これにて一件落着、と言いたいところですが、今自分がどの環境でAPIを動かしているのか確認したいですし、どの環境でAPIを動かすのか自分で設定したいと思うのが人間です。僕も人間なのでそうでした。
そこで、Railsの環境の確認方法と設定方法を調べてみました。

まず、環境の確認方法です。

参考:RailsGuides Railsアプリケーションを設定する

こちらによると、Railsが実行される環境を定義しているのはENV["RAILS_ENV"]だそうです。

$ bundle exec rails s

としてサーバを起動した場合、ソースコード中のputsなどはサーバのコンソールに表示されるため、ソースコード中に

puts ENV["RAILS_ENV"]

としてあげれば、サーバのコンソールにdevelopmentなどと表示されます。
もっとスマートな方法がありそうですが、とりあえず環境の確認方法でした。

次に、環境の設定方法です。

参考:RailsGuides Railsのコマンドラインツール

こちらによると、サーバを起動する際に、オプションを付けることで、環境の設定ができるようです。僕も試してみました。

$ bundle exec rails s -e test

このようにサーバを起動し、先ほどの方法で環境を確認すると、きちんとtest環境になっていることが確認できました。
また、何もつけないでサーバを起動すると、development環境になるそうです。

余談ですが、production環境でサーバを起動して、同様の方法で環境を確認しようとしても、エラーが出てしまいます。
原因となっている箇所とその理由はなんとなくわかりますが、まだ理解は不十分なので、これ以上深く掘り下げるのはやめておこうと思います。

以上、Ruby on Railsの環境の環境の確認方法と設定方法でした。