我需要以某种方式将变量从自定义子类“返回”Chef::Provider::Package
到调用它的配方,以便稍后在同一个配方中使用此变量。
我尝试添加自定义Chef::Resource::Package
子类属性和适当的 setter/getter 包装器和set_or_return
函数。我可以成功地从我的子类中写入和读取此属性Chef::Provider::Package
,但是当我尝试从配方中访问此属性时,我看到的只是nil
价值。这可以用以下配方来说明:
a = apt_package "bzip2" do
action :install
end
# this won't work, a.version would be nil
log "bzip package version is #{a.version}"
但是,我可以看到lib/chef/provider/package/apt.rb
正在@current_resource.version
设置:
@current_resource.version(installed_version)
读取由提供者从同一配方创建的实例的任意属性(version
在此示例中)的正确方法是什么?Chef::Resource::AptPackage
apt_package