2016-12-09 78 views
1

我试图使用厨师LWRP下的目录资源,但无法访问资源块内的属性,有没有办法做到这一点。 还是我完全错了,需要不同的方法来实现这一点。厨师提供者使用目录资源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 

上线not_if {node["#{@new_resource.name}"].include? "test"}被评估为nilClass的@new_resource.name

,而它得到directory node["#{@new_resource.name}"] do行适当的评估

感谢

回答

1

,最后发现它

当引用另一个资源中的变量时,我们需要不使用@来访问它。

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

感谢@stajkowski(GitHub

+0

,你不应该使用插值时你只需要调用一个变量都不是。顺便说一句,你代码听起来很奇怪,这里有可能是另一种方法,你以后... – Tensibai

+0

嗨@Tensibai。我希望你是对的,会有更好的解决方案。 用例就像我有一个配方,每次都需要使用不同的属性来调用,并且由于厨师不会多次调用include_recipe,我只是将配方设置为LWRP(复制粘贴配方实际上)。 它是一个很长的配方,我只通过一个资源来解释我的问题。 非常感谢。 – Shan