2014-10-20 28 views
2

摘要

我可以使用外部菜譜中的LWRP而不在菜譜名稱的前面加上前綴嗎?例如,如果mycookbook包含mylwrp資源,我該怎麼做?調用LWRP時的食譜名稱前綴

include_recipe 'mycookbook' # Contains "mylwrp" 
mylwrp "frobulator" do 
    frobulations 42 
end 

詳細

我寫了一個將被命名爲mycookbook_mylwrp,因爲庫食譜的LWRP使用正常的資源/供應商佈局如下

mycookbook/ 
├── providers 
│   └── mylwrp.rb 
└── resources 
    └── mylwrp.rb 

有沒有可能到

  • 將LWRP保留在mycookbook食譜
  • 使用LWRP沒有前綴的mycookbook名(mycookbook_mylwrp

我意識到,我可以創造一個全新的食譜,並把它稱爲「mylwrp」,並使用默認提供如下

mylwrp/ 
├── providers 
│   └── default.rb 
└── resources 
    └── default.rb 

但之後我必須爲我想要以這種方式使用的每個LWRP製作專門的食譜。

回答

1

一個選項是使用HWRP。這些進入libraries目錄,而不是resourcesproviders。如果你走這條路線,我會考慮poise庫,它允許你用與LWRP相同的技巧編寫HWRP。

現在,所有的說法,你正在做一些明顯超出規範的東西。該社區習慣於將自定義提供者命名爲與聲明他們的食譜相匹配的名稱空間。如果你想與社區分享這本食譜,你會引起一些混淆。即使你只是在內部使用它,它也會使你爲你的團隊帶來的任何新成員的學習曲線變得更加陡峭。所以除非你有強制性的理由去做,否則我強烈建議你避免它。另一方面,如果你確實有一個強有力的理由,我建議你分享一下,這樣我們都能從你的想法中受益。

+0

原因大多是化妝品,所以傾向於將LWRP放入自己的食譜中,以獲得所需的名稱。但這是很好的信息,謝謝。 – 2014-10-20 23:57:32

+0

@FredClausen如果他們是緊密相關的資源,我真的建議你看看'poise'。它使得編寫HWRP與編寫LWRP一樣容易。我要去追求一個新的術語,並稱他們爲MWRP(中等重量的資源提供者)。 – 2014-10-22 16:05:59

+0

它們並不緊密相關,所以我的感覺是讓它們在單獨的食譜中更好。這就是說我肯定會閱讀'''poise'''以防我將來需要這樣做。看看還有什麼可以提供的。 – 2014-10-22 23:06:39

0

不,LWRPs全部都是全球性的,菜譜中也有命名空間以防止碰撞。您也不需要include_recipe,它只涉及運行配方代碼。儘管如此,您確實需要metadata.rb中的depends行。

+0

在大廚IRC他們提到使用HWRP可能是一種方法。 – 2014-10-20 06:28:12

+0

這有點複雜,但確實允許直接控制類命名。對於爲什麼你認爲這是一個好主意,你並沒有真正給出過多的背景知識。如果你正在嘗試做某種花哨的依賴注入的東西,還有其他的選擇,我會再次指出資源和提供者是全局的,所以你不能重用現有的名字。 – coderanger 2014-10-20 07:17:53