¿Qué pasos se pueden tomar para heredar y anular algunas partes de un libro de cocina Chef?


9

Con más de 3200 libros de cocina disponibles en el supermercado Chef, a menudo ya hay un libro de cocina que cubre la necesidad que necesito resolver.

Casi cada vez que se requiere algún cambio en una plantilla, o una variable, o un recurso en un libro de cocina existente.

¿Cuáles son los pasos para anular y / o mejorar los libros de cocina existentes? Sin bifurcar su código, y conservando la capacidad de obtener actualizaciones de versiones en el futuro.


1
La mayoría de los libros de cocina tienen un cierto número de atributos que simplemente se pueden configurar al construir un libro de cocina de envoltura. Por lo general, no tiene que "anular" nada para hacer los ajustes esperados.
pollitos de

Respuestas:


13

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_resourcecambiar recursos. Evite edit_resourcecuando 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_resourcey 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.


Este es el patrón que seguimos y generalmente funciona hasta que ajustar el libro de cocina de la comunidad se ha vuelto demasiado difícil y es más fácil reescribirlo desde cero.
Travis Thompson

¡Excelente! Ni siquiera sabía que cambiaron el viejo rebobinado de buggy por algo que es parte del Chef.
Evgeny

Lamento preguntar, pero su nombre de usuario también está incluido en el enlace que mencionó ... Lo que me hace preguntarme si tiene alguna afiliación con ese enlace. Si es así, ¿está familiarizado con las políticas de SE sobre la inclusión de una "divulgación" apropiada al respecto (que también se incluirá en su respuesta)?
Pierre.Vriens

1
@ Pierre.Vriens en el contexto del mundo Chef, mi blog es más o menos equivalente a los documentos oficiales. Verifique mi historial en SO si desea confirmación :)
coderanger

(en este caso, no enlazo a los documentos oficiales porque contienen errores de sintaxis para esta API)
coderanger
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.