2013-10-25 33 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”食谱的依赖性不需要要明确列出,而是将它们作为传递依赖关系从您的自定义回购下载。