wahaha:
a: 'b'
development:
c: 'd'
- 比较老的方式
YAML.load_file
,这可以加载任何地方的yml文件,只要写正确路径
set = YAML.load_file("#{Rails.root}/config/abc.yml")
# =>
{
"wahaha" => {
"a" => "b"
},
"development" => {
"c" => "d"
}
}
set[Rails.env] # development环境测试, 等于set.dig(Rails.env)
# =>
{
"c" => "d"
}
set[Rails.env]['c'] # 等于 set.dig(Rails.env, 'c') => 'd'
set.dig
- rails 4.2版本以后
config_for
, 这只能加载config下的yml文件, 给rails做配置文件的话,建议使用这个
set = Rails.application.config_for(:abc) # 默认是env: Rails.env
# =>
{
"c" => "d"
}
set = Rails.application.config_for(:abc, env: 'wahaha' )
# =>
{
"a" => "b"
}
set = Rails.application.config_for(:abc, env: 'wahaha' ).symbolize_keys
# =>
{
:a => "b"
}
set
- 使用dig取值
# 示例
set = {
"wahaha" => {
"a" => {
"b" => "async"
}
}
}
set['wahaha']['a']['b'] # => "async"
set.dig('wahaha', 'a', 'b') # => "async"
set['wahahahahah']['a']['b'] # 会nilClass错误
set.dig('wahahahahah', 'a', 'b') # nil
- rails配置文件最佳实践 最佳实践链接
- 使用yml文件翻译
- Rails 会把 config/locales 文件夹中的 .rb 和 .yml 文件自动添加到翻译文件加载路径中
- 默认的区域设置和翻译的加载路径可以在 config/application.rb 文件中配置
config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
config.i18n.default_locale = :de
en:
a: 'aaa'
de:
a: 'bbb'
# 加载的文件en.yml文件名称不重要,重要的是文件里边的写法
I18n.t(:a) # => 'aaa' # 默认default_locale为en
I18n.t(:a) # => 'bbb' # 设置 config.i18n.default_locale = :de