【发布时间】:2016-10-26 01:55:18
【问题描述】:
我正在尝试关注this example,但是当我找不到像他那样遍历哈希的方法时:
...
platforms = {
'MyOS' => {
'package' => 'package',
'versions' => ['1.0', '2.0','3.0']
}
}
...
platforms.each do |platform, (package, versions)|
versions.each do |version|
context "On #{platform} #{version}" do
before do
Fauxhai.mock(platform: platform, version: version)
end
let(:chef_run) { ChefSpec::ChefRunner.new.converge('cookbook::recipe') }
it "Installs the package" do
chef_run.should install_package package
end
end
end
...
我收到以下错误:
/path/file.rb:XX:in `block (2 levels) in <top (required)>': undefined method `each' for nil:NilClass (NoMethodError)
由于某种原因,|a, (b,c)| 不起作用,圆括号被忽略。
似乎platform 包含(如预期)'MyOS',但迭代器 package 等于 '{"package"=>"package", "versions"=> ["1.0", "2.0", "3.0"]}' 和 versions 为空。
我期待以下内容:
platform = "MyOS"
package = "package"
versions = ["1.0", "2.0", "3.0"]
所以我可以在循环浏览平台版本时访问包名称。
【问题讨论】:
标签: ruby