0

我正在尝试这个东西一段时间,但无法弄清楚我做错了什么。这是示例函数(与原始函数类似,除了哈希是在原始函数中动态生成的):

module Puppet::Parser::Functions
    newfunction(:am_running_oss, :type => :rvalue ) do |args|

        oss = {:linux=>["Slackware", "RedHat", "Caldera"],
               :mac=>["Jaguar", "Lion", "Tiger", "Kodiak"],
               :win=>["Chicago", "Daytona", "Longhorn"]}

        cls = args[0]

        if oss.key?(cls)
            return oss[cls][0]
        else
            return 'undefined'
        end
    end
end

然后在我的清单中,我有这个:

$h= am_running_oss($::am_os_type)
notify { "=*=*= amRunningOS <|:|> ${h} =*=*=*=*=*=*=*=": }

(am_os_type 是事实,根据节点类型返回winmaclinux )

我期待看到JaguarSlackware作为返回值,但我得到了 undefined 。有谁知道我做错了什么?在将参数传递给函数方面,我还有什么遗漏吗?干杯!!

4

1 回答 1

1

回答我自己的问题,以防谷歌在这里找到相同的人。对我有用的是这样定义cls

cls = args[0].to_sym if args[0].is_a? String

干杯!!

于 2013-11-13T15:31:01.497 回答