Welche Schritte könnten unternommen werden, um einige Teile eines Kochbuchs zu erben und zu überschreiben?

9

Mit mehr als 3200 Kochbüchern im Chef-Supermarkt gibt es oft bereits ein Kochbuch, das den Bedarf abdeckt, den ich lösen muss.

Fast jedes Mal, wenn eine Vorlage, eine Variable oder eine Ressource in einem vorhandenen Kochbuch geändert werden muss.

Was sind die Schritte, um vorhandene Kochbücher zu überschreiben und / oder zu verbessern? Ohne den Code zu forken und die Möglichkeit zu behalten, in Zukunft Versionsaktualisierungen zu erhalten.

Evgeny
quelle
1
Die meisten Kochbücher haben eine bestimmte Anzahl von Attributen, die einfach beim Erstellen eines Wrapper-Kochbuchs festgelegt werden können. Normalerweise müssen Sie nichts "überschreiben", um erwartete Optimierungen vorzunehmen.
Küken

Antworten:

13

Es gibt viele Besonderheiten, aber das von uns verwendete Gesamtmuster lautet "Wrap and Extend". Die allgemeine Idee ist, ein Kochbuch zu erstellen, das vom Community-Kochbuch abhängt, das normalerweise benannt wird mycompany_originalthing, und dann Rezepte in dem zu erstellen, das include_recipe 'originalthing::whatever'aufruft, aber entweder vor / nach dem Hinzufügen weiterer Dinge oder mit Aufrufen zu Dingen wie edit_resourcedem Ändern von Ressourcen. Vermeiden Sie es, edit_resourcewenn es möglich ist, da es zu sprödem Code führt, aber es ist da, wenn Sie es brauchen. Sie können auch Wrapper-Kochbücher verwenden, um Attribute festzulegen, benutzerdefinierte Ressourcen zu unterordnen oder zu verpacken usw.

Für den speziellen Fall "Ich muss eine Vorlage in einem Community-Rezept optimieren" würde dies folgendermaßen aussehen:

include_recipe 'original::whatever'

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

Weitere Details edit_resourceund Freunde finden Sie unter https://coderanger.net/rewind/

Bei Kochbüchern, die auf benutzerdefinierten Ressourcen anstelle von Rezepten basieren, können die Dinge komplexer werden, aber die Einzelheiten hängen stark davon ab, wie genau das von Ihnen erweiterte Kochbuch geschrieben ist.

Codierer
quelle
Dies ist das Muster, dem wir folgen, und es funktioniert normalerweise so lange, bis das Optimieren des Community-Kochbuchs zu schwierig geworden ist und es einfacher ist, es einfach von Grund auf neu zu schreiben.
Travis Thompson
Großartig! Ich wusste nicht einmal, dass sie das alte Buggy-Rückspul-Ding in etwas geändert haben, das Teil von Chef ist.
Evgeny
Tut mir leid zu fragen, aber Ihr Benutzername ist auch in dem von Ihnen erwähnten Link enthalten ... Ich frage mich daher, ob Sie mit diesem Link verbunden sind. Wenn ja, sind Sie mit den SE-Richtlinien zum Einfügen einer angemessenen "Offenlegung" darüber vertraut (um auch in Ihre Antwort aufgenommen zu werden)?
Pierre.Vriens
1
@ Pierre.Vriens Im Kontext der Chef-Welt entspricht mein Blog in etwa den offiziellen Dokumenten. Überprüfen Sie meine Geschichte auf SO, wenn Sie eine Bestätigung wünschen :)
Coderanger
(In diesem Fall verlinke ich nicht auf die offiziellen Dokumente, da diese Syntaxfehler für diese API enthalten.)
Coderanger