加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – Chef – 找到缺少的属性NilClass

发布时间:2020-12-17 03:06:42 所属栏目:百科 来源:网络整理
导读:上下文 – 我们有大量的Chef属性来执行我们的安装,现在已经定义了3000个并且每个环境都有变化. 问题 – 有时Chef配方会引用一个不存在的属性节点[:mystuff] [:typo].这会导致以下错误: Recipe Compile Error in /var/chef/cache/cookbooks/yyy/recipes/so
上下文 – 我们有大量的Chef属性来执行我们的安装,现在已经定义了3000个并且每个环境都有变化.

问题 – 有时Chef配方会引用一个不存在的属性节点[:mystuff] [:typo].这会导致以下错误:

Recipe Compile Error in /var/chef/cache/cookbooks/<yyy>/recipes/something.rb
undefined method '[]' for nil:NilClass

这是一个毫无价值的错误,因为它不会让我确切地知道缺少哪个节点/属性.即使使用chef-client -l debug运行也无济于事.刀烹饪测试< x>没有帮助,因为从语法上来说它是正确的.有没有办法让它打印出导致错误的确切行号?配方可能包含10或100个属性,所以这是一个巨大的时间浪费一行一行来发现拼写错误.

解决方法

我正是出于这个原因编写了 Chef Sugar的 deep_fetch方法.

你得到的错误只是Ruby哈希的副产品.有关deep_fetch的更多信息,您还可以查看关于该主题的博客文章:https://sethvargo.com/delicious-new-chef-sugars/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读