【问题标题】:cookbook_name in recipe- TypeError: no implicit conversion of Symbol into String食谱中的食谱名称-TypeError:没有将符号隐式转换为字符串
【发布时间】:2015-03-05 02:24:21
【问题描述】:

我的食谱中有以下代码,但它出错了。

log "###" + cookbook_name + "::" + recipe_name + " " + Time.now.inspect + ": Starting execution phase"
puts "###" + cookbook_name + "::" + recipe_name + " " + Time.now.inspect + ": Starting compile phase"

错误是:

TypeError: no implicit conversion of Symbol into String
/test/chef/cookbooks/cookbook-server/recipes/setup_server.rb:10:in `+'

问题似乎与cookbook_namerecipe_name 等(未硬编码的)有关。请帮忙。

【问题讨论】:

  • 有人知道这里可能是什么问题吗?

标签: chef-infra chef-recipe chef-solo


【解决方案1】:

当您在 Ruby 中对字符串执行 + 操作时,它不会将其他类型转换为字符串。如果您希望 Ruby 自动执行此操作,则需要进行如下插值:

puts "### #{cookbook_name} :: #{recipe_name} #{Time.now.inspect} : Starting compile phase"

如果您想使用+,您需要将所有变量作为字符串提供:

puts "###" + cookbook_name.to_s + "::" + recipe_name.to_s + " " + Time.now.inspect + ": Starting compile phase"

我建议你使用第一种方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    相关资源
    最近更新 更多