Ruby无法提供错误'未知功能放置'

时间:2014-05-29 00:57:47

标签: ruby puppet

首先,我是一个红宝石菜鸟,我有点过头了,请你是异教徒。

我在这个文件的第14行得到了一个例外,(由别人写的)。

https://github.com/theforeman/kafo/blob/master/modules/kafo_configure/manifests/yaml_to_class.pp

  if is_hash($kafo_configure::params[$name]) {
    # The quotes around $classname seem to matter to puppet's parser...
    $params = { "${classname}" => $kafo_configure::params[$name] }
    create_resources( 'class', $params )

我需要添加一个调试来确定' create_resources'函数调用正在崩溃。

exception object expected at /usr/local/var/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems\
/kafo-0.6.0/modules/kafo_configure/manifests/yaml_to_class.pp:14 on node foo.bar

当我尝试打印出$ name的值时,我遇到了一个错误,即“放置'是一个未知的功能。

  if is_hash($kafo_configure::params[$name]) {
    puts "debugging name is #{name}"
    # The quotes around $classname seem to matter to puppet's parser...
    $params = { "${classname}" => $kafo_configure::params[$name] }
    create_resources( 'class', $params )

我还尝试了以下语法:

    puts "debugging name is #{name}"
    print "debugging name is #{name}"
    puts "debugging name is $name"
    print "debugging name is $name"
    puts "debugging name is #{$name}"

任何人都可以解释:
1.为什么此功能无法打印/放置?
2.有没有其他方法来显示该$ name变量的值是什么?

更新

正如所指出的,我还使用了这种语法puts "debugging name is #{$name}"

3 个答案:

答案 0 :(得分:2)

您可以使用notice功能打印调试信息。

您指出的fail函数将打印消息,但也会破坏清单执行。

答案 1 :(得分:1)

想出来。由于puppet是用ruby编写的,我错误地认为我可以在puppet文件中使用ruby。

我能够使用木偶内置的“失败”功能打印出我需要的debuging声明

fail("if the value of name is ${name}")

工作解决方案

if is_hash($kafo_configure::params[$name]) {
# The quotes around $classname seem to matter to puppet's parser...
fail("if the value of name is ${name}")
$params = { "${classname}" => $kafo_configure::params[$name] }
create_resources( 'class', $params )

答案 2 :(得分:1)

要在代理端显示调试消息,可以使用notify { }资源类型。