Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby/Watir:如何从同一个Ruby文件中引用多个.yml文件_Ruby_Watir - Fatal编程技术网

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

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

我试图检索在两个不同的.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.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文件。上面更新的代码=)