我碰巧发现,在~/.chef/knife.rb或/etc/chef/client.rb中,任何错误都会被刀或厨师客户忽略。
...
a_non_exist_method a_non_exist_var
...
puts "==== #{a_non_exist_method}"这是完全没有问题的,即使a_non_exist_method a_non_exist_var是绝对错误的。结果当然是
==== chef-client/knife如何执行client.rb/knife.rb
PS:我知道knife.rb和client.rb是一个配置文件,不应该在那里添加用户程序逻辑,只是好奇它为什么没有错误地把任何东西放进去?
发布于 2021-01-30 22:26:00
它被计算为Chef::Config类实例,它继承于mixlib-config,这取决于您如何测试不处于严格模式的类(相关代码)。
因此,当不设置严格模式时,您可能会忽略一个属性,而不会发出警告或出错。
您的puts只是被计算为标准的ruby,字符串内插搜索一个变量,即使您称它为a_non_exist_method,并且从ruby鸭子输入,它是一个零值,内插为string是一个空字符串。
https://stackoverflow.com/questions/65229290
复制相似问题