cookbook_name in recipe- TypeError: no implicit conversion of Symbol into String

心已入冬 提交于 2019-12-22 16:01:13

问题


I have the following code in my recipe but it errors.

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

The error is:

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

The issue seems to be with the cookbook_name, recipe_name etc.(the ones which are not hardcoded). Please help.


回答1:


When you're doing + action with the strings in Ruby, it doesn't convert other types to strings. If you want from Ruby to do that automatically, you need to do interpolation like:

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

If you want to use + you need to provide all variables as strings:

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

I suggest you to use first method.



来源:https://stackoverflow.com/questions/28842642/cookbook-name-in-recipe-typeerror-no-implicit-conversion-of-symbol-into-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!