【发布时间】:2014-02-11 12:29:17
【问题描述】:
我对 Ruby 比较陌生,但在过去的两周里,我一直在对 Chef 测试进行大量研究。这个测试使用 ChefSpec 和 Fauxhai,但它看起来不是很“红宝石”,我希望社区能给我一些关于编码风格的建议。有没有更好的方法来编写这样的嵌套循环?
cookbooks/foo/recipes/default.rb
package "foo" do
action :install
end
食谱/foo/spec/default_spec.rb
require 'chefspec'
describe 'foo::default' do
platforms = {
"debian" => ['6.0.5'],
"ubuntu" => ['12.04', '10.04'],
"centos" => ['5.8', '6.0', '6.3'],
"redhat" => ['5.8', '6.3'],
"mac_os_x" => ['10.6.8', '10.7.4', '10.8.2'],
"windows" => ['2008R2']
}
platforms.each do |platform,versions|
versions.each do |version|
context "on #{platform} #{version}" do
before do
Fauxhai.mock(platform: platform, version: version)
end
it 'should install foo' do
@runner = ChefSpec::ChefRunner.new.converge('foo::default')
@runner.should install_package 'foo'
end
end
end
end
end
欢迎任何和所有的反馈。谢谢!
【问题讨论】:
-
github.com/bbatsov/ruby-style-guide 是推荐 Ruby 编码指南的一个很好的通用资源。我认为在保持可读性的同时清理这些嵌套循环没有什么可以做的。
-
我已经阅读了该指南,但我也没有看到太多可以改进的地方。感谢您的反馈!
标签: ruby rspec chef-infra chefspec