2013-10-25 37 views
1

我有包含許多食譜廚師儲存庫,並且包含以下一個Berksfile:如何讓Berkshelf使用本地路徑作爲默認站點,或取消默認站點?

Dir.glob('cookbooks/*/').each do |path| 
    cookbook File.basename(path), :path => path 
end 

cookbook 'supervisor', '~> 0.5.1', :github => "opscode-cookbooks/supervisor" 

這包括從所述庫中的每個食譜,並從存儲庫github上的外部食譜。默認情況下,Berkshelf在opscode社區網站上搜索未列出的烹飪書。

取而代之的是,我要麼喜歡:

  • 禁用此默認,從來沒有搜尋失蹤依賴外部站點。
  • 將此默認值替換爲本地路徑,以便我可以刪除添加每個本地食譜的Dir.glob

作爲一個便箋,我完全意識到將廚師手冊保存在廚師儲藏庫中被認爲是反模式。在這種情況下,我不能改變這種情況,雖然Berkshelf不是爲了解決這個問題而設計的,但是可以打開默認網站,以免從用戶不能控制的源代碼中隱藏食譜,這仍然很有用。

+0

你應該在GitHub上打開一個問題來消除'site'的默認值。我會公開圍繞它進行一些討論 – sethvargo

+0

@sethvargo:https://github.com/berkshelf/berkshelf/issues/983 – borntyping

回答

2

Berkshelf似乎使用opscode社區網站,因爲它是默認位置,因此您可以嘗試設置一個虛擬網站值。這個想法是,一個缺失的依賴會拋出一個超時錯誤。

一種更好的方法,在我看來,就是經營自己的食譜資料庫,採用專用的託管廚師組織或開源廚師服務器:

chef_api "https://api.opscode.com/organizations/myrepo", node_name: "repo", client_key: "/path/to/repo.pem" 

cookbook 'myapp' 
cookbook 'supervisor', '~> 0.5.1', :github => "opscode-cookbooks/supervisor" 

的「MYAPP」食譜的依賴性不需要要明確列出,而是將它們作爲傳遞依賴關係從您的自定義回購下載。