Help us understand the problem. What is going on with this article?

configを使ってGithubに公開したくない定数や設定値を管理する

More than 3 years have passed since last update.

TwitterのSECRET_KEYなど、公開したくない情報はサーバー環境変数や環境変数をdotenvで管理する方法がありますが、configというGemを使って設定値を管理してみました。

railsconfig/config

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

参考

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away