Mat*_* M. 2 ruby-on-rails ruby-on-rails-4
我有这个文件 config/application.yml
settings:
info:
name: MyAppName
domain: example.com
contact:
email: mail@example.com
phone: 1234567890
Run Code Online (Sandbox Code Playgroud)
在environment.rb我有这个
AppConfig = YAML::load_file('config/application.yml')
Run Code Online (Sandbox Code Playgroud)
所以现在我可以通过使用来访问它 AppConfig["settings"]["info"]["name"]
我如何通过使用来访问它AccConfig.settings.info.name?
没有任何宝石!
如果您使用的是Rails 4.2或更高版本,则可以使用config_for配置文件.它们需要放在/ config文件夹下.(没有尝试过)
在你的情况下,它将是: config = Rails.application.config_for(:application)
这是更加清晰和Rails方式将配置加载到应用程序中.
然后,您可以使用OpenStruct为其启用点表示法.
APP_CONFIG = OpenStruct.new(config)
这是一个没有任何宝石的简单方法,但如果你经常这样做,我不确定性能.
我们的想法是先将数据转换为JSON,然后将JSON解析为OpenStruct(内置于Ruby中):
json_data = YAML::load_file('config/application.yml').to_json
data = JSON.parse(json_data, object_class: OpenStruct)
Run Code Online (Sandbox Code Playgroud)
这将深深地将所有哈希转换为OpenStructs并正确处理数组.
举个例子,如果我有这个YAML:
people:
-
name: 'Jerry Rasmussen'
address:
address_1: '123 Street St'
-
name: 'Sara DeWetzel'
Run Code Online (Sandbox Code Playgroud)
然后它可以像这样加载和使用:
json_data = YAML::load_file('config/people.yml').to_json
data = JSON.parse(json_data, object_class: OpenStruct)
data.people.first.name
=> Jerry Rasmussen
data.people.first.address.address_1
=> 123 Street St
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3809 次 |
| 最近记录: |