node.run_state给出错误:未定义的方法`[]'为nil:NilClass

时间:2016-07-20 06:27:44

标签: ruby chef chef-recipe chef-solo

我在配方中创建了一个ruby块,如下所示:

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="25dp"
        android:textStyle="bold"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Tours"
        android:id="@+id/textView" />

现在,我正在尝试使用ruby_block 'load_databag_secret' do block do value = data_bag_item("tokens", "masterkey", IO.read("/etc/chef/encrypted_data_bag_secret") ) node.run_state['docker']['password'] = value['key'] end end ,如下所示:

node.run_state['docker']['password']

但是,我收到以下错误:

token2_hash = lambda { token1_hash.deep_merge({ "value" => node.run_state['docker']['password'] } ) }

请建议使用ERROR: undefined method `[]' for nil:NilClass

的正确方法

1 个答案:

答案 0 :(得分:-1)

运行状态与自动生成未定义级别的节点属性不同。更重要的是,它是一个先进的内部功能,你可能不应该在没有更多关于Chef和上下文的知识的情况下使用它。

我之前已经说过这个,我再说一遍:停止在StackOverflow上问这些一次性问题。你显然正在努力完成一些特定的事情,这些事情可以追溯到你所提出的十几个问题。这不是一个好地方,在IRC,Slack或Discourse上询问,回答者可以拥有统一的背景,更好地了解你的实际目标。