這篇將介紹與上篇 Configatron 相同功能類似的 Gem - Config。
# Gemfile
gem "config"
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 再放入對應的環境檔案。
size: 1
server: google.com
size: 2
computed: <%= 1 + 2 + 3 %>
section:
size: 3
servers: [ {name: yahoo.com}, {name: amazon.com} ]
Settings.size # => 2
Settings.server # => google.com
Settings.computed # => 6
Settings.section.servers[0].name # => yahoo.com
Settings.section.servers[1].name # => amazon.com