【Rails】環境の指定と作成方法について(Rails.env)

スポンサーリンク

Rails で各種環境の指定方法と作成方法についてです。

環境の指定方法

Rails には基本3つの環境が用意されています。ステージングなどを別途追加することも可能です。

  • テスト環境 (test)
  • 開発環境 (development)
  • 本番環境 (production)

デフォルトの環境には development が使用されます。環境をパラメータとして渡すことでデフォルト以外の環境を指定することができますが、各コマンドで指定する方法が異なります。

コマンド 環境指定方法
rails console test
rails server -e | --environment production
rake db RAILS_ENV=production

Rails.envコマンドで現在の環境が確認でき、論理値を返して判定するメソッドも使えます。

$ ./bin/rails console test
Running via Spring preloader in process 54496
Loading test environment (Rails 4.2.7)
[1] pry(main)> Rails.env
=> "test"
[2] pry(main)> Rails.env.test?
=> true
[3] pry(main)> Rails.env.development?
=> false
[4] pry(main)> Rails.env.production?
=> false

環境変数にセットすることでパラメータとして渡さなくても環境を指定できます。この場合はコマンドに関わらず同じです。

$ export RAILS_ENV=production
$ ./bin/rails console
Running via Spring preloader in process 54571
Loading production environment (Rails 4.2.7)
irb(main):001:0>

実際のコード内で使用することによって環境に合わせて条件分岐させることができます。

- if Rails.env.development?
  = debug(params)

環境を作成する

新しい環境を作成するにはconfig/environments以下にファイルを作成します。databse.yml や secrets.yml のファイルにも作成する環境の設定を追加しましょう。例として staging 環境を作成しています。

$ cp config/environments/production.rb config/environments/staging.rb
$ vi config/database.yml
$ vi config/secrets.yml
$ ./bin/rails console staging
Running via Spring preloader in process 55809
Loading staging environment (Rails 4.2.7)
irb(main):001:0> Rails.env
=> "staging"
irb(main):002:0> Rails.env.staging?
=> true

 Rails環境を作成する | Rails ガイド