我的 Recipe 中有以下代码,但它出错了。
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"
我建议你使用第一种方法。
关于chef-infra - 菜谱中的cookbook_name - TypeError : no implicit conversion of Symbol into String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28842642/