我需要以某种方式从Chef::Provider::Package
的自定义子类“返回”变量返回到它所调用的配方,所以我可以在同一配方中使用此变量。
我尝试使用Chef::Resource::Package
函数添加自定义set_or_return
子类属性和相应的setter / getter包装器。我可以从我的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
提供程序是从同一个配方中创建的?{/ p>
答案 0 :(得分:0)
可能像::
a = apt_package "bzip2" do
action :install
end
ruby_block "Init logger" do
block do
logger= resources("log[printing version]")
logger.message a.version
end
end
log "printing version" do
message ""
end