Use*_*er3 2 chef-infra 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"
Run Code Online (Sandbox Code Playgroud)
错误是:
TypeError: no implicit conversion of Symbol into String
/test/chef/cookbooks/cookbook-server/recipes/setup_server.rb:10:in `+'
Run Code Online (Sandbox Code Playgroud)
这个问题似乎是与cookbook_name,recipe_name等(没有硬编码的那些).请帮忙.
当您使用+Ruby中的字符串执行操作时,它不会将其他类型转换为字符串.如果你想从Ruby自动执行,你需要做插值,如:
puts "### #{cookbook_name} :: #{recipe_name} #{Time.now.inspect} : Starting compile phase"
Run Code Online (Sandbox Code Playgroud)
如果你想使用,+你需要提供所有变量作为字符串:
puts "###" + cookbook_name.to_s + "::" + recipe_name.to_s + " " + Time.now.inspect + ": Starting compile phase"
Run Code Online (Sandbox Code Playgroud)
我建议你使用第一种方法.