我正在尝试检索在两个不同的.yml文件上定义的键值对。是否可以在单个Ruby文件中执行此操作?
答案 0 :(得分:1)
不确定。试试这个:
require 'yaml'
file1 = YAML.load_file("/home/abdo/settings.yml")
file2 = YAML.load_file("/home/abdo/database.yml")
这是我在Rails中用来加载设置文件的示例:
SETTINGS = YAML.load_file("#{Dir.pwd}/config/settings.yml")[Rails.env]
如果要在1个哈希中加载多个文件,可以执行以下操作:
files = %w(database.yml settings.yml)
yamls = files.map { |f| YAML.load_file("#{Dir.pwd}/config/#{f}") }
H = files.each_with_object({}).with_index { |(e, hash), i| hash[e] = yamls[i] }
您可以访问H["database.yml"]
以获取代表名称为Hash
的文件的database.yml
如果要在目录中加载特定模式的文件列表,可以使用Iterate through every file in one directory中提到的Dir.glob
编辑如果您的YAML文件包含非冲突数据(合并时未被覆盖的数据)并且您想要将所有这些数据合并到一个Hash
中,那么能做到:
yamls.inject({}) { |hash, yaml| hash.merge(yaml) }