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