冒險村18 - Config

18 - Config

這篇將介紹與上篇 Configatron 相同功能類似的 Gem - Config。

gem install

1
2
# Gemfile
gem "config"

Installing

1
2
3
4
5
6
7
8
9
10
11
bundle exec rails rails g config:install

# auto create
- config/initializers/config.rb
- config/settings.yml
- config/settings.local.yml
- config/settings
- config/settings/development.yml
- config/settings/production.yml
- config/settings/test.yml
- append .gitignore

這幾個檔案的優先權滿好理解的,與上篇的權限相同,一開始 Config 會先去讀 settings.yml 檔案內的 config,並根據目前的環境會去讀各對應的 config,然後把兩個檔案 merge 起來,如有重複的情況,settings 的設定會被覆蓋掉~

由此可見,如果 config 在各環境下都還是相同的參數時,就直接丟 settings 內即可,如果在不同環境下的 config 再放入對應的環境檔案。

Example

config > settings.yml

1
2
size: 1
server: google.com

config > environments > development.yml

1
2
3
4
5
size: 2
computed: <%= 1 + 2 + 3 %>
section:
size: 3
servers: [ {name: yahoo.com}, {name: amazon.com} ]

rails console

1
2
3
4
5
Settings.size   # => 2
Settings.server # => google.com
Settings.computed # => 6
Settings.section.servers[0].name # => yahoo.com
Settings.section.servers[1].name # => amazon.com

參考來源