TwitterのSECRET_KEYなど、公開したくない情報はサーバー環境変数や環境変数をdotenvで管理する方法がありますが、configというGemを使って設定値を管理してみました。
configのinstall
1. Gemfileに下記追加
gem "config"
2. Install
rails g config:install
インストールすると環境毎に設定ファイルが作られる。
$ bin/rails g config:install
create config/initializers/config.rb
create config/settings.yml
create config/settings.local.yml
create config/settings
create config/settings/development.yml
create config/settings/production.yml
create config/settings/test.yml
append .gitignore
3. 定数や設定値を記載する
公開してもいい定数はinstall時に作成されたファイルに記載すればいいが、公開したくないものに関しては下記のようにymlファイルを作成し記載します。
$ vim config/settings/development.local.yml
twitter:
app_id: "YOUR_APP_ID"
app_secret: "YOUR_APP_SECRET"
また、config/settings.local.yml
に記載した場合もDevelopment環境で利用できるようです。
4. 定数を利用する
上記の例でいうと、下記のようにデータを取得できます。
Settings.twitter.app_id
=> "YOUR_APP_ID"
5. Commitし、Pushする
そのままCommitしてPushしても公開されないので便利です。
.gitignoreを見ると、末尾に下記三行が挿入されてるので、local.ymlは公開されません。
config/settings.local.yml
config/settings/*.local.yml
config/environments/*.local.yml