2016-12-09 2 views
1

シェフのLWRPでディレクトリリソースを使用しようとしていますが、リソースブロック内の属性にアクセスできません。 これを達成するには、私は完全に間違っており、異なるアプローチが必要です。ラインnot_if {node["#{@new_resource.name}"].include? "test"}シェフプロバイダのディレクトリリソースを使用するLWRP

my-cookbook/providers/default.rb

use_inline_resources 

action :setup do 
    directory node["#{@new_resource.name}"] do 
    action :create 
    not_if {node["#{@new_resource.name}"].include? "test"} 
    end 
end 

@new_resource.nameそれが適切directory node["#{@new_resource.name}"] doラインに

おかげで最後

答えて

1

を評価されますながらnilClass、

として評価され、それを見つけた

別のリソース内の変数を参照する場合は、@を使わずにアクセスする必要があります。 @stajkowskiへ

action :setup do 
    directory node["#{@new_resource.name}"] do 
    action :create 
    not_if {node["#{new_resource.name}"].include? "test"} 
    end 
end 

おかげで(GitHub

+0

そして、あなたはただどちらも変数を呼び出していないときには、補間を使用しないでください。 Btw、あなたはここで本当に奇妙な音をコードし、おそらくあなたが何をしているかへの別のアプローチがあります... – Tensibai

+0

こんにちは@天使。私はあなたが正しいと思う、より良い解決策があるだろう。 ユースケースは、私は毎回異なる属性で呼び出す必要があるレシピを持っています。シェフがinclude_recipeを2回以上呼び出さないため、レシピをLWRP(コピー貼り付け実際にレシピ)。 長いレシピで、問題を説明するために1つのリソースしか渡しませんでした。 ありがとうございます。 – Shan

関連する問題