Ruby/Watir:如何从同一个Ruby文件中引用多个.yml文件
我试图检索在两个不同的.yml文件上定义的键值对。是否可以在单个Ruby文件中执行此操作?当然可以。试试这个:Ruby/Watir:如何从同一个Ruby文件中引用多个.yml文件,ruby,watir,Ruby,Watir,我试图检索在两个不同的.yml文件上定义的键值对。是否可以在单个Ruby文件中执行此操作?当然可以。试试这个: 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.y
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]
如果要在一个哈希中加载多个文件,可以执行以下操作:
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”]
以获取表示文件名为database.yml的Hash
如果要加载目录中遵循特定模式的文件列表,可以使用中提到的Dir.glob
编辑如果您的YAML文件具有非冲突数据(合并时不会被覆盖的数据),并且您希望将所有这些数据合并到一个散列
,则可以执行以下操作:
yamls.inject({}) { |hash, yaml| hash.merge(yaml) }
当然为什么不呢?您能否提供代码以便我们了解您的问题?谢谢Abdo,我们在项目中面临的问题是有25-30个.yml配置文件。我们是否有办法以某种方式合并这些文件中存在的所有数据,以便它可以被单个引用变量引用?我们不希望为可维护性使用单个.yml文件。上面更新的代码=)