如何在一个“ if”语句中匹配多个节点角色

问题描述 投票:0回答:1

我发现了一些资源,指出可以使用以下方法检查节点的角色

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语句来完成此操作,但是上述两个版本为什么不起作用?

ruby chef
1个回答
0
投票

解决方法是:

if (node.role? 'role1') || (node.role? 'role2') || (node.role? 'role3')
  # do something
end

以原始方式将解释器与缩写形式的]混淆了>

if condition? (then this) : (else this)
© www.soinside.com 2019 - 2024. All rights reserved.