從 RailsTips: Config So Simple Your Mama Could Use It 這篇看到一個非常簡單漂亮的用法,因為還蠻常
在 Rails 裡面用到的,特此一記:
可以將如下的 YAML 檔放在 config 目錄下,這裡用了一招 &DEFAULTS 可以複製相同的部分:
DEFAULTS: &DEFAULTS
email: [email protected]
email_signature: |
Regards,
The Harmony Team
development:
domain: harmonyapp.local
<<: *DEFAULTS
test:
domain: harmonyapp.com
<<: *DEFAULTS
production:
domain: harmonyapp.com
<<: *DEFAULTS
然後將以下這個 Module 檔放到 lib 目錄下 (或是 config/initializers 下也可以):
# /lib/harmony.rb
module Harmony
# Allows accessing config variables from harmony.yml like so:
# Harmony[:domain] => harmonyapp.com
def self.[](key)
unless @config
raw_config = File.read(RAILS_ROOT + "/config/harmony.yml")
@config = YAML.load(raw_config)[RAILS_ENV].symbolize_keys
end
@config[key]
end
def self.[]=(key, value)
@config[key.to_sym] = value
end
end
如此便可以讀到 Harmony[:domain] 了,依據不同 Rails 環境。