我发现了一些资源,指出可以使用以下方法检查节点的角色
if node.role?('role1')
# do something
end
有效。
但是如果我想匹配多个角色,则会出错:
if node.role?('role1') || node.role?('role2') || node.role?('role3')
# do something
end
我收到错误:
syntax error, unexpected keyword_end, expecting end-of-input
我也尝试过:
if node.role == 'role1' || node.role == 'role2' || node.role == 'role3'
# do something
end
这给了我错误:
undefined method 'role' for #<Chef::Node
我意识到我可以用三个if
语句来完成此操作,但是上述两个版本为什么不起作用?
解决方法是:
if (node.role? 'role1') || (node.role? 'role2') || (node.role? 'role3')
# do something
end
以原始方式将解释器与缩写形式的]混淆了>
if condition? (then this) : (else this)