Ruby / Watir:我如何从同一个Ruby文件中引用多个.yml文件

时间:2014-02-20 08:11:44

标签: ruby watir

我正在尝试检索在两个不同的.yml文件上定义的键值对。是否可以在单个Ruby文件中执行此操作?

1 个答案:

答案 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) }