我一直在为Puppet编写自定义类型,而且我遇到过这样一个案例:对于最新的'和'现在'我要求存在某些参数,但是对于“缺席”这些参数。我希望这些参数是可选的。
不幸的是,我还没有能够弄清楚如何测试'确保'在红宝石代码中。
Puppet::Type.type(:fubar) do
ensurable do
desc 'Has three states: absent, present, and latest.'
newvalue(:absent) do
# ...
end
newvalue(:latest) do
# ...
end
newvalue(:present) do
# ...
end
def insync?(is)
# ...
end
defaultto :latest
end
# ...
validate do
# This if condition doesn't work. The error is still raised.
if :ensure != :absent
unless value(:myprop)
raise ArgumentError, "Property 'myprop' is required."
end
end
end
end
所以,我的问题很简单......我如何测试'确保'的价值?那么当它不存在时,不进行验证?
答案 0 :(得分:0)
感谢Matt Schuchard和John Bollinger的帮助。
问题在于:
if :ensure != :absent
确实在比较两个符号,我需要将属性的值与符号进行比较:
if self[:ensure] != :absent
我对Puppet和Ruby都是新手,我没有意识到差异。约翰明确表示,马特提供了一个很好的例子。
再次感谢Matt和John。