Hay muchos detalles, pero el patrón general que usamos es "envolver y extender". La idea general es hacer un libro de cocina que dependa del libro de cocina de la comunidad, usualmente nombrado mycompany_originalthing
, y luego hacer recetas en lo que llame include_recipe 'originalthing::whatever'
pero con más cosas agregadas antes / después o con llamadas a cosas como edit_resource
cambiar recursos. Evite edit_resource
cuando sea posible, ya que conduce a un código quebradizo, pero está allí si lo necesita. También puede usar libros de cocina de envoltura para establecer atributos, subclase o envolver recursos personalizados, etc.
Para el caso específico de "Necesito ajustar una plantilla en una receta comunitaria", se vería así:
include_recipe 'original::whatever'
edit_resource!(:template, '/path/to/something') do
source 'mytemplate.erb'
cookbook 'mycompany_original'
end
Puede encontrar más detalles edit_resource
y amigos en https://coderanger.net/rewind/
Con libros de cocina basados en recursos personalizados en lugar de recetas, las cosas pueden volverse más complejas, pero los detalles dependen mucho de cómo está escrito exactamente el libro de cocina que está extendiendo.