chef - language - ¿Debo usar include_recipe o agregar la receta a run_list?
chef programming language (2)
Tal como lo veo, cualquier receta debería poder ejecutarse en una máquina vacía por sí misma. Entonces, si alguna receta A depende de la receta B que se ejecuta antes, siempre uso include_recipe.
Por ejemplo: 2 libros de cocina, tomcat y java. Tomcat requiere java.
Cuando un usuario quiere instalar Tomcat, puede que no tenga idea de que realmente necesita algún otro libro de cocina para instalarlo. Ejecuta la receta de Tomcat y o bien falla con un mensaje de error completamente inútil como "No se encontró Java" o incluso peor - tiene éxito, pero luego, por supuesto, el usuario no puede iniciar tomcat, porque no tiene Java instalado.
Pero cuando hay una línea
include_recipe ''java''
en el libro de cocina tomcat, que también requiere una línea dedepends ''java''
en metadatos, el usuario al intentar instalar tomcat verá el mensaje de error comprensible: "el libro de cocina no encontrado java". De esta forma, el usuario puede descargar dependencias por su cuenta (o incluso con alguna herramienta automática) sin tener que ejecutar recetas, sino leer metadatos.
Tratando de descubrir el mejor enfoque para un gran proyecto. ¿Cuándo es apropiado agregar recetas dentro de una receta usando include_recipe
en lugar de agregar la receta a run_list
? ¿Hay una buena regla general?
Toda la lógica debe controlarse con listas de ejecución. Los libros de cocina, por más que lo intenten, no son tan reutilizables como a la gente le gustaría pensar. Todo include_recipe
hace es agregar otro lugar donde los usuarios tienen que buscar para averiguar qué va a hacer la lista de ejecución, include_recipe
y colóquela en la lista de ejecución.