recipe中的cookbook_name - TypeError:没有将Symbol隐式转换为String

时间:2015-03-03 21:51:45

标签: chef chef-recipe chef-solo

我的食谱中有以下代码,但错误。

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等问题有关(不是硬编码的)。请帮忙。

1 个答案:

答案 0 :(得分:5)

当您使用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"

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