2016-08-08 9 views
1

私は単純な属性ファイルを持っています:attributes/default.rbkitchen.yml属性はデフォルト値を上書きしません - シェフ12.12 - 台所1.10

default['simpleattr'] = 'file value' 

そしてkitchen.yml内部に、私はレシピの中に

suites: 
    - name: default 
    run_list: 
     - recipe[simple::default] 
    attributes: 
    simpleattr: 'value from kitchen' 
    simple: 
     simpleattr: 'value from kitchen' 

を行い、私が行います

log "default['simpleattr']: "+node.default['simpleattr'] 

そして私は常に出力として'file value'ではなく'value from kitchen'を取得します。

私はテストで値を無効にしたいと思います。

+1

あるとしてその後すべてがある

node.default['simpleattr'] 

代わり

node['simpleattr'] 

を考え使用しないでください。 'node ['simple'] ['simpleattr']'にアクセスする必要があります。代わりに 'node.default'を介して属性にアクセスしないでください。代わりに' node ['simpleattr']。 YAMLでは、 'attributes'行の下の行には1つのスペースインデントがありません。 'kitchen diagnose'を使ってYAMLが正しく解析されていることを確認することができます。 – StephenKing

+1

私は問題の根本を得たことを願っています(私の答えを見てください) – StephenKing

+1

あなたは私のコメントに書いたすべてを喜んで無視していました。 – StephenKing

答えて

4

ノード値にnode.default[]でアクセスしないでください。代わりにnode[]を使用してください。シェフのattribute hierarchyは自動的に優先度に従って値を計算します。

問題を再現し、here on Githubをアップロードしました。 solutionも以前私のコメントに記載されています。あなたは、あなたが期待すると、出力はあなたがテストキッチンで定義された値にアクセスするには

Recipe: simple::default 
    * log[default['simpleattr']: value from kitchen] action write 
関連する問題