一千萬個為什麽

搜索

什麽是繼承和重寫廚師食譜的某些部分的步驟?



廚師超市裏有3200多本食譜,經常有一本食譜能夠滿足我需要解決的問題。

幾乎每次模板,變量或現有食譜中的資源都需要進行一些更改。

覆蓋和/或改進現有食譜的步驟是什麽?不分代碼,並保留未來版本更新的能力。

轉載註明原文: 什麽是繼承和重寫廚師食譜的某些部分的步驟?

一共有 1 個回答:

有很多細節,但我們使用的整體模式是“包裝和擴展”。總的想法是制作一本依賴社區食譜的食譜,通常命名為 mycompany_originalthing ,然後在那個調用 include_recipe'originalthing :: whatever'的地方制作食譜,但是與在調用諸如 edit_resource 之類的東西之前/之後添加更多內容以更改資源。盡可能避免使用 edit_resource ,因為它會導致代碼變得脆弱,但如果您需要它,它就會出現。您還可以使用包裝食譜來設置屬性,子類或自定義資源,等等。

對於“我需要在社區配方中調整模板”的具體情況,它看起來像這樣:

include_recipe 'original::whatever'

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

You can find more details about edit_resource and friends at https://coderanger.net/rewind/

隨著食譜基於自定義資源而不是食譜,事情可能會變得更加復雜,但具體取決於你正在擴展的烹飪書的寫法。