我的食谱中包含以下代码,但出现错误。
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_name
,recipe_name
等(不是硬编码的)上。请帮忙。 最佳答案
当您对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"
我建议您使用第一种方法。