[ruby on rails]加载yml文件

  • yml文件 config/abc.yml
wahaha:
	a: 'b'
development:
	c: 'd'
  1. 比较老的方式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
  1. 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 
  1. 使用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
  1. rails配置文件最佳实践 最佳实践链接
  2. 使用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.yml
en:
	a: 'aaa'
de: 
	a: 'bbb'
# 加载的文件en.yml文件名称不重要,重要的是文件里边的写法
I18n.t(:a) # => 'aaa'   # 默认default_locale为en
I18n.t(:a) # => 'bbb'   # 设置 config.i18n.default_locale = :de
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值