Rails 4.1以降のランダム文字列管理


Rails 4.1以降はランダム文字列を config/secrets.yml に集めて管理するようになったとのこと。

2017/2/6追記:devise独自に設定しなければ、Railsのsecret_base_keyをつかうとのこと。

なので以下の devise_secret_keyを設定する必要はない。

config/secrets.yml のキーの読み込み方(deviseを例として)

ユーザ認証のライブラリー devise は3.1以降から秘密鍵を求めている。Rails 4.1 pushing secrets to herokuを参考にdeviseの秘密鍵をconfig/secrets.ymlに格納する。

config/initializers/devise.rb には以下のように記述する。

# Rails 4.0前
#config.secret_key = 'rake secretで生成した文字列'
#
# Rails 4.1以降
config.secret_key = Rails.application.secrets.devise_secret_key

config/secrets.yml に以下のように devise_secret_key を設定する。

development:
  devise_secret_key: 2d391ca120e471b3b946209f99a85305...
test:
  devise_secret_key: 2d391ca120e471b3b946209f99a85305...
production:
  devise_secret_key: <%= ENV["DEVISE_SECRET_KEY"] %>

本番環境においては各秘密鍵を環境変数として指定し、secrets.yml自体には記述しないとのこと。

まとめ

  • config/secrets.ymlにかかれている鍵は 「Rails.application.secrets.鍵名」として参照できる。
  • config/secrets.ymlには、development, testモードの部分には生鍵を書く、puroducitonモード用の鍵は環境変数を埋め込む