Chef 13语法更改

时间:2017-10-22 08:30:41

标签: ruby syntax chef chef-recipe

尝试将厨师客户端从版本12升级到13我面临一些主要与语法更改相关的问题

node['java']['webapps'].each do |object|
        name = object[0]
        attributes = object[1]
          if attributes.attribute?('enabled')
                if attributes.enabled
                        if attributes.attribute?('x')
                                if attributes.x.attribute?('conf')
                                        attributes.x.conf.each do |conf_file|
                                                template "#{x_conf_dir}/#{conf_file}" do
                                                  source "#{conf_file}.erb"
                                                  mode '0755'
                                                  owner 'tomcat'
                                                  group 'tomcat'
                                                end
                                        end
                                end
                        end
                end
        end
end

主厨客户端出现错误" if attributes.enabled"在版本12上运行正常(如果数组中的enabled = true则应该继续)

现在我正在点击"未定义的方法'启用'"

检查数组中的值的正确语法是什么?

1 个答案:

答案 0 :(得分:1)

现在必须是attributes['enabled'],但无论如何都可以大规模清理该代码。我认为使用类似node.read的{​​{1}}方法做同样的事情:

Hash#dig

任何时候你看到那么多的对角缩进,可能会重新考虑你的代码:)