Quelles mesures pourraient être prises pour hériter et remplacer certaines parties d'un livre de cuisine Chef?

9

Avec plus de 3200 livres de cuisine disponibles dans les supermarchés Chef, il existe souvent déjà un livre de cuisine qui couvre le besoin que je dois résoudre.

Presque chaque fois qu'un changement est nécessaire dans un modèle, une variable ou une ressource dans un livre de recettes existant.

Quelles sont les étapes pour remplacer et / ou améliorer les livres de cuisine existants? Sans bifurquer leur code et conserver la possibilité d'obtenir des mises à jour de version à l'avenir.

Evgeny
la source
1
La plupart des livres de cuisine ont un certain nombre d'attributs qui peuvent simplement être définis lors de la création d'un livre de cuisine wrapper. Vous n'avez généralement pas à "remplacer" quoi que ce soit pour effectuer les réglages attendus.
poussins

Réponses:

13

Il y a beaucoup de spécificités mais le modèle global que nous utilisons est "envelopper et étendre". L'idée générale est de faire un livre de cuisine qui dépend du livre de cuisine de la communauté, généralement nommé mycompany_originalthing, puis de faire des recettes dans celui qui appelle include_recipe 'originalthing::whatever'mais avec plus de choses ajoutées avant / après ou avec des appels à des choses comme edit_resourcechanger les ressources. A éviter edit_resourceautant que possible car cela conduit à du code fragile, mais il est là si vous en avez besoin. Vous pouvez également utiliser des livres de recettes wrapper pour définir des attributs, des sous-classes ou des ressources personnalisées, etc.

Pour le cas spécifique de «J'ai besoin de modifier un modèle dans une recette communautaire», cela ressemblerait à ceci:

include_recipe 'original::whatever'

edit_resource!(:template, '/path/to/something') do
  source 'mytemplate.erb'
  cookbook 'mycompany_original'
end

Vous pouvez trouver plus de détails sur edit_resourceet amis sur https://coderanger.net/rewind/

Avec des livres de cuisine basés sur des ressources personnalisées au lieu de recettes, les choses peuvent devenir plus complexes, mais les détails dépendent beaucoup de la façon dont le livre de cuisine que vous étendez est écrit.

coderanger
la source
C'est le modèle que nous suivons et cela fonctionne généralement jusqu'à ce que peaufiner le livre de cuisine communautaire soit devenu trop difficile et qu'il soit plus facile de le réécrire à partir de zéro.
Travis Thompson
Génial! Je ne savais même pas qu'ils avaient changé l'ancien truc de rembobinage en quelque chose qui fait partie de Chef.
Evgeny
Désolé de demander, mais votre nom d'utilisateur est également inclus dans le lien que vous avez mentionné ... Ce qui me fait me demander si vous avez une affiliation avec ce lien. Si oui, connaissez-vous les politiques de SE concernant l'inclusion d'une "divulgation" appropriée à ce sujet (à inclure également dans votre réponse)?
Pierre.Vriens
1
@ Pierre.Vriens dans le contexte du monde du Chef, mon blog est à peu près équivalent aux documents officiels. Consultez mon historique sur SO si vous voulez une confirmation :)
coderanger
(dans ce cas, je ne fais pas de lien vers les documents officiels car ils contiennent des erreurs de syntaxe pour cette API)
coderanger