Thursday, January 26, 2012

RAILS_ENVの追加や環境ごとの違いへの対応方法

Railsではデフォルトでdevelopment, test, productionという環境に対応できるように作られているのはご存知の通り。 この環境ごとの設定や、新しい環境の追加方法などについて、簡単にまとめる。

ちなみに執筆時点では以下の実行環境を利用している。

  • Ruby: 1.9.2
  • Ruby on Rails: 3.0.5

環境名を取得する

Rubyのコードの中から現在の環境名(development|test|productionなど)を取得するのは、Rails.envを利用する。

新しい環境設定を追加する

例えばstagingという環境を新規に追加するには、以下の作業をする。

  1. RAILS_HOME/config/environmentsにあるproduction.rbをstaging.rbにコピーする
  2. database.ymlにstagingの項目を追加する
もちろんその他に環境依存の設定ファイルなどがあれば、そちらにもstagingを追加する。これで例えば以下のようにすればstagingの設定でrailsを起動できる。
$ rake db:create RAILS_ENV=staging
$ rake db:migrate RAILS_ENV=staging
$ rails server -e staging

環境ごとに違うgemを使う

たとえばdevelopmentとproductionで違うgemを利用する場合、Gemfileに以下のように記述する。

group :development, :test do
  gem 'sqlite3-ruby'
end
group :staging, :production do
  gem 'mysql2', '0.2.7'
end
bundle installする際には、以下のようにすると特定の環境で必要なgemを除外できる。
$ bundle install --without test development
参考: Bundler : Using Groups

No comments: