読者です 読者をやめる 読者になる 読者になる

Rails Webook

自社のECを開発している会社で働いています。Rails情報やサービスを成長させる方法を書いていきます

Railsで新しい環境(environment)を追加する

Rails Tips

Railsでは、デフォルトでdevelopmenttestproductionの3つの環境が用意されています。
しかし、QA環境、Staging環境といった環境が欲しくなることが往々にしてあります。そういった新しい環境を作る方法を説明します。



動作確認

  • Rails 4.1

Staging環境を追加

今回は、新しくパフォーマンスやキャッシュなどのテストができtodるstaging環境を追加してみます。

1. database.ymlを設定

database.ymlにステージング環境を追加する。
productionの内容をコピーし、環境名やDBの名前をstagingに変更します。

# config/database.yml
default: &default
  adapter: sqlite3
  pool: 5
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

test:
  <<: *default
  database: db/test.sqlite3

staging:
  <<: *default
  database: db/staging.sqlite3

production:
  <<: *default
  database: db/production.sqlite3

2. secrets.ymlを設定

secrets.ymlにステージング環境を追加します。ENV名も少し変えます。

# config/secrets.yml
development:
  secret_key_base: 6e0c74b2b7c5c70081fbe7c0f17941ebc1003ebb05f1d7608689e75668503a44e3bad322b4241561f51fbbf47485771716056bfe05b0bf4ffa6d601b4eb47f43

test:
  secret_key_base: 1c3d0c1767d23a3b03df761c91e0b356fcf2806224992f29783073fe192606cc75019b5e7f55424e240ee81fe31acbb652dca60f515bf270beda955fa176f901

staging:
  secret_key_base: <%= ENV["STAGING_SECRET_KEY_BASE"] %>

# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

3. environments/staging.rbを作成

ステージング環境用の設定ファイルのconfig/environments/staging.rbを作成し、中身はconfig/environments/production.rbからコピーしてきます。

以下の値だけ、ステージング用に設定を変更します。

# config/environments/staging.rb

# Set to :debug to see everything in the log.
# config.log_level = :info
config.log_level = :debug # ログレベルをinfoからdebugにする

次の箇所に各設定パラメーターの意味が書いてあります。

4. 動作確認

productionと同じ環境をすぐに用意できるのならいいのですが、すぐに用意できない場合は、次の記事を参考にしてローカルでstaging環境でテストしてみましょう。

(productionをstaging, SECRET_KEY_BASEをSTAGING_SECRET_KEY_BASEに読み替えて実行してください)


ちなみに、staging環境で起動していることを確認するために、サーバーを起動させる前にapplication.html.erbに下記を追加しましょう。

# app/views/layouts/application.html.erb
<%= "Railsの環境: #{Rails.env} / staging?: #{Rails.env.staging?}" %>


では、サーバーを起動させると、画面にstagingと表示されています。
f:id:nipe880324:20141206163924p:plain:w420


以上です。