我希望能够用 3 个参数来定义一个轻量级资源,其中两个是基本/基本参数,第三个是这两个参数的组合。我还想提供自定义第三个参数的可能性。例如:
如何修改以下代码以实现上述行为full_name
属性:
资源定义:
actions :install
attribute :name, :kind_of => String, :name_attribute => true
attribute :version, :kind_of => String
attribute :full_name, :kind_of => String
提供者定义:
action :install do
Chef::Log.info "#{new_resource.full_name}"
end
我希望看到不同资源指令的不同输出,例如:
resource "abc" do
version "1.0.1"
end
将导致abc-1.0.1
, but:
resource "def" do
version "0.1.3"
full_name "completely_irrelevant"
end
将导致completely_irrelevant
.
是否有可能在资源定义中定义这种行为(可能通过default
参数)或者我只能在提供者定义中执行此操作?如果第二个为真,那么我可以将计算出的值存储在new_resource
对象的full_name
属性(该类似乎错过了full_name=
方法定义)或者我必须将其存储在局部变量中?
Update
感谢Draco的提示,我意识到我可以在资源文件中创建一个访问器方法并计算full_name
当需要时,动态值。我更喜欢一个更干净的解决方案,但这比在行动实施中计算它要好得多。
厨师版厨师:10.16.4