<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:posterous="http://posterous.com/help/rss/1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Hedgehog's Hiatus</title>
    <link>http://hedgehogshiatus.com</link>
    <description>Hedgehog's HTML hornbook of hackery</description>
    <generator>posterous.com</generator>
    <link xmlns="http://www.w3.org/2005/Atom" href="http://posterous.com/api/sup_update#e70d049c8" type="application/json" rel="http://api.friendfeed.com/2008/03#sup" />
    
    
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/HedgehogsPosterous" /><feedburner:info uri="hedgehogsposterous" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://posterous.superfeedr.com/" /><item>
      <pubDate>Tue, 28 Jun 2011 18:52:52 -0700</pubDate>
      <title>Git Submodules: Automatic init and update on fetch and pull</title>
      <link>http://feedproxy.google.com/~r/HedgehogsPosterous/~3/BXGABeAIsS4/git-submodules-automatic-init-and-update-on-f-69372</link>
      <guid isPermaLink="false">http://hedgehogshiatus.com/git-submodules-automatic-init-and-update-on-f-69372</guid>
      <description>&lt;p&gt;
	&lt;h2&gt;NOTE:&lt;/h2&gt;

&lt;p&gt;You still have to be careful to &lt;em&gt;alwyas&lt;/em&gt; push changes made in the
submodule/sub-project &lt;em&gt;before&lt;/em&gt; you commit and push changes in the super-project.&lt;/p&gt;

&lt;h3&gt;Git 1.7.5 and later&lt;/h3&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="dt"&gt;#!/usr/bin/env bash&lt;/span&gt;
git clone --recursive -o name repository destination 
pushd destination
  git fetch --recurse-submodules=yes
  git checkout name branch
popd&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Once cloned and abranch is checked out the usual update workflow is:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="dt"&gt;#!/usr/bin/env bash&lt;/span&gt;
pushd destination
  git pull --recurse-submodules=yes

  &lt;span class="c"&gt;# Or&lt;/span&gt;

  git fetch --recurse-submodules=yes
popd&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;To make these the default behavior in a project, so you can use &lt;code&gt;git pull&lt;/code&gt; and &lt;code&gt;git fetch&lt;/code&gt; without the recurse option being given:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="dt"&gt;#!/usr/bin/env bash&lt;/span&gt;
git config fetch.recurseSubmodules yes&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;Git pre-1.7.5&lt;/h3&gt;

&lt;p&gt;The usual clone workflow for Git earlier than 1.7.5:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="dt"&gt;#!/usr/bin/env bash&lt;/span&gt;
git clone -o name repository destination
pushd destination
  git fetch
  git checkout name branch
  git submodule init
  git submodule update 
popd&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Once cloned the usual update workflow is :&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="dt"&gt;#!/usr/bin/env bash&lt;/span&gt;
pushd destination
  git pull name branch
  git submodule update
popd&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;For earlier versions of Git:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create post-merge hook&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create an alias&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;git config &lt;span class="fu"&gt;alias&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;pullall &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;!f(){ git pull &amp;quot;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="co"&gt;$@&lt;/span&gt;&lt;/span&gt;&lt;span class="k"&gt;&amp;quot; &amp;amp;&amp;amp; git submodule init &amp;amp;&amp;amp; git submodule update --recursive; }; f&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Hope that helps.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://hedgehogshiatus.com/git-submodules-automatic-init-and-update-on-f-69372"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://hedgehogshiatus.com/git-submodules-automatic-init-and-update-on-f-69372#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HedgehogsPosterous/~4/BXGABeAIsS4" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/867340/hedgehog-avatar-384x384-composed.png</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/3sTwTZ0cSSuR</posterous:profileUrl>
        <posterous:firstName>Hedgehog</posterous:firstName>
        <posterous:lastName />
        <posterous:nickName>hedgehog</posterous:nickName>
        <posterous:displayName>Hedgehog</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://hedgehogshiatus.com/git-submodules-automatic-init-and-update-on-f-69372</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 03 Mar 2011 14:24:00 -0800</pubDate>
      <title>Autoload and How-Not-To Require in Ruby 1.9.2.p0|p136</title>
      <link>http://feedproxy.google.com/~r/HedgehogsPosterous/~3/t4JeRc7-Gz4/autoload-and-how-not-to-require-in-ruby-192p0-0</link>
      <guid isPermaLink="false">http://hedgehogshiatus.com/autoload-and-how-not-to-require-in-ruby-192p0-0</guid>
      <description>&lt;p&gt;
	&lt;p&gt;A little known gotcha, the cause of which can be obscure&amp;hellip;
You &lt;a href="http://railsguts.com/initialization.html"&gt;can&lt;/a&gt; &lt;a href="http://www.koders.com/default.aspx?s=file&amp;amp;la=ruby&amp;amp;p=8"&gt;oftentimes&lt;/a&gt; &lt;a href="http://blog.8thlight.com/articles/2007/10/08/micahs-general-guidelines-on-ruby-require"&gt;see&lt;/a&gt; suggested, even when
&lt;a href="http://devblog.vworkapp.com/post/910714976/best-practice-for-rubys-require"&gt;discussing best practices&lt;/a&gt;, snippets like the following:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="gv"&gt;$LOAD_PATH&lt;/span&gt;.unshift(&lt;span class="co"&gt;File&lt;/span&gt;.dirname(&lt;span class="pc"&gt;__FILE__&lt;/span&gt;) + &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;/../lib&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;) &lt;span class="r"&gt;unless&lt;/span&gt; \
  &lt;span class="gv"&gt;$LOAD_PATH&lt;/span&gt;.include?(&lt;span class="co"&gt;File&lt;/span&gt;.dirname(&lt;span class="pc"&gt;__FILE__&lt;/span&gt;) + &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;/../lib&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;)&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;If you intend to use Ruby&amp;rsquo;s [autoload], then do not do that.  If you
do you&amp;rsquo;ll run into &lt;a href="http://www.ruby-forum.com/topic/905571#985194"&gt;this issue.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rather, if you have to keep backward compatibility, insert
File.expand_path, or use some of methods from the
&lt;a href="http://www.ruby-doc.org/stdlib/libdoc/pathname/rdoc/index.html"&gt;Pathname standard library&lt;/a&gt;. The &lt;code&gt;Pathname&lt;/code&gt; has the advantage of
being more declarative.  But you should take care to not feed &amp;lsquo;~&amp;rsquo; Pathname,
or just move on to Ruby 1.9.2&amp;hellip;.&lt;/p&gt;

&lt;h1&gt;&lt;strong&gt;Example (incl. 1.8.7):&lt;/strong&gt;&lt;/h1&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;pathname&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
lp = &lt;span class="co"&gt;Pathname&lt;/span&gt;.new(&lt;span class="pc"&gt;__FILE__&lt;/span&gt;).dirname.realpath.parent + &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;lib&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class="gv"&gt;$LOAD_PATH&lt;/span&gt;.unshift(lp) &lt;span class="r"&gt;unless&lt;/span&gt; &lt;span class="gv"&gt;$LOAD_PATH&lt;/span&gt;.include?(lp)&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;If you don&amp;rsquo;t have to worry about 1.8.7:&lt;/p&gt;

&lt;h1&gt;&lt;strong&gt;Example (1.9.2):&lt;/strong&gt;&lt;/h1&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;require_relative &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;../lib/mylibrary&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://hedgehogshiatus.com/autoload-and-how-not-to-require-in-ruby-192p0-0"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://hedgehogshiatus.com/autoload-and-how-not-to-require-in-ruby-192p0-0#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HedgehogsPosterous/~4/t4JeRc7-Gz4" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/867340/hedgehog-avatar-384x384-composed.png</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/3sTwTZ0cSSuR</posterous:profileUrl>
        <posterous:firstName>Hedgehog</posterous:firstName>
        <posterous:lastName />
        <posterous:nickName>hedgehog</posterous:nickName>
        <posterous:displayName>Hedgehog</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://hedgehogshiatus.com/autoload-and-how-not-to-require-in-ruby-192p0-0</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 24 Feb 2011 23:44:00 -0800</pubDate>
      <title>Upgrade VirtualBox Guest Additions in a Vargrant Base Ubuntu Box</title>
      <link>http://feedproxy.google.com/~r/HedgehogsPosterous/~3/WdOQiJRoQOQ/upgrade-virtualbox-guest-additions-in-a-vargr</link>
      <guid isPermaLink="false">http://hedgehogshiatus.com/upgrade-virtualbox-guest-additions-in-a-vargr</guid>
      <description>&lt;p&gt;
	&lt;p&gt;&lt;strong&gt;[update:03-01-2011]&lt;/strong&gt; Add OSE caveat
&lt;strong&gt;[update:03-10-2011]&lt;/strong&gt; Removed install virtualbox-ose-guest-dkms&lt;/p&gt;

&lt;p&gt;This describes how to update Vagrant&amp;rsquo;s &lt;code&gt;lucid64.box&lt;/code&gt; base box to the latest
Guest Additions for VirtualBox 4.0.4.  The only wrinkle was that the base box
did not have the &lt;code&gt;ppa:debfx/virtualbox&lt;/code&gt; repository configured.&lt;/p&gt;

&lt;h2&gt;Start The Old Vagrant VM&lt;/h2&gt;

&lt;p&gt;Make a backup and extract to a temporary folder:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="other"&gt;$&lt;/span&gt; mkdir tmp
&lt;span class="other"&gt;$&lt;/span&gt; cp lucid64&lt;span class="other"&gt;.&lt;/span&gt;box tmp&lt;span class="other"&gt;/&lt;/span&gt;lucid64&lt;span class="other"&gt;.&lt;/span&gt;box
&lt;span class="other"&gt;$&lt;/span&gt; vagrant box add lucid64_4&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;0&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="number"&gt;4&lt;/span&gt; lucid64&lt;span class="other"&gt;.&lt;/span&gt;box
&lt;span class="other"&gt;$&lt;/span&gt; &lt;span class="fu"&gt;cd&lt;/span&gt; tmp
&lt;span class="other"&gt;$&lt;/span&gt; vagrant init lucid64_4&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;0&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="number"&gt;4&lt;/span&gt;
&lt;span class="other"&gt;$&lt;/span&gt; vagrant up&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;You should see message like:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="other"&gt;[&lt;/span&gt;default&lt;span class="other"&gt;]&lt;/span&gt; The guest additions on this VM &lt;span class="r"&gt;do&lt;/span&gt; not match the install version of
VirtualBox&lt;span class="other"&gt;!&lt;/span&gt; This may cause things such as forwarded ports&lt;span class="other"&gt;,&lt;/span&gt; shared
folders&lt;span class="other"&gt;,&lt;/span&gt; and more to not work properly&lt;span class="other"&gt;.&lt;/span&gt; If any of those things fail on
this machine&lt;span class="other"&gt;,&lt;/span&gt; please update the guest additions and repackage the
box&lt;span class="other"&gt;.&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;It is this we aim to eliminate&amp;hellip;.&lt;/p&gt;

&lt;h2&gt;Update VirtualBox&amp;rsquo;s Guest Additions&lt;/h2&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="other"&gt;$&lt;/span&gt; vagrant ssh
vagrantup&lt;span class="other"&gt;:&lt;/span&gt;~&lt;span class="other"&gt;$&lt;/span&gt; sudo apt&lt;span class="argument"&gt;-get&lt;/span&gt; update
vagrantup&lt;span class="other"&gt;:&lt;/span&gt;~&lt;span class="other"&gt;$&lt;/span&gt; sudo apt&lt;span class="argument"&gt;-get&lt;/span&gt; install python&lt;span class="argument"&gt;-software&lt;/span&gt;&lt;span class="argument"&gt;-properties&lt;/span&gt;
vagrantup&lt;span class="other"&gt;:&lt;/span&gt;~&lt;span class="other"&gt;$&lt;/span&gt; sudo add&lt;span class="argument"&gt;-apt&lt;/span&gt;&lt;span class="argument"&gt;-repository&lt;/span&gt; ppa&lt;span class="other"&gt;:&lt;/span&gt;debfx&lt;span class="other"&gt;/&lt;/span&gt;virtualbox
vagrantup&lt;span class="other"&gt;:&lt;/span&gt;~&lt;span class="other"&gt;$&lt;/span&gt; &lt;span class="fu"&gt;cd&lt;/span&gt; &lt;span class="other"&gt;/&lt;/span&gt;opt
vagrantup&lt;span class="other"&gt;:&lt;/span&gt;~&lt;span class="other"&gt;$&lt;/span&gt; sudo wget &lt;span class="argument"&gt;-c&lt;/span&gt; http&lt;span class="other"&gt;:&lt;/span&gt;&lt;span class="other"&gt;/&lt;/span&gt;&lt;span class="other"&gt;/&lt;/span&gt;download&lt;span class="other"&gt;.&lt;/span&gt;virtualbox&lt;span class="other"&gt;.&lt;/span&gt;org&lt;span class="other"&gt;/&lt;/span&gt;virtualbox&lt;span class="other"&gt;/&lt;/span&gt;&lt;span class="number"&gt;4&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;0&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="number"&gt;4&lt;/span&gt;&lt;span class="other"&gt;/&lt;/span&gt;VBoxGuestAdditions_4&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;0&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="number"&gt;4&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;iso &lt;span class="dl"&gt;\&lt;/span&gt;
                       &lt;span class="argument"&gt;-O&lt;/span&gt; VBoxGuestAdditions_4&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;0&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="number"&gt;4&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;iso
vagrantup&lt;span class="other"&gt;:&lt;/span&gt;~&lt;span class="other"&gt;$&lt;/span&gt; sudo mount VBoxGuestAdditions_4&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;0&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="number"&gt;4&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;iso &lt;span class="argument"&gt;-o&lt;/span&gt; loop &lt;span class="other"&gt;/&lt;/span&gt;mnt
vagrantup&lt;span class="other"&gt;:&lt;/span&gt;~&lt;span class="other"&gt;$&lt;/span&gt; &lt;span class="fu"&gt;cd&lt;/span&gt; &lt;span class="other"&gt;/&lt;/span&gt;mnt
vagrantup&lt;span class="other"&gt;:&lt;/span&gt;~&lt;span class="other"&gt;$&lt;/span&gt; sudo sh VBoxLinuxAdditions&lt;span class="other"&gt;.&lt;/span&gt;run &lt;span class="other"&gt;-&lt;/span&gt;&lt;span class="argument"&gt;-nox11&lt;/span&gt;
vagrantup&lt;span class="other"&gt;:&lt;/span&gt;~&lt;span class="other"&gt;$&lt;/span&gt; &lt;span class="fu"&gt;cd&lt;/span&gt; &lt;span class="other"&gt;/&lt;/span&gt;opt
vagrantup&lt;span class="other"&gt;:&lt;/span&gt;~&lt;span class="other"&gt;$&lt;/span&gt; sudo rm *&lt;span class="other"&gt;.&lt;/span&gt;iso
vagrantup&lt;span class="other"&gt;:&lt;/span&gt;~&lt;span class="other"&gt;$&lt;/span&gt; &lt;span class="fu"&gt;exit&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;According to &lt;a href="http://blog.brettalton.com/2010/04/28/installing-guest-additions-in-virtualbox-for-an-ubuntu-server-guest/"&gt;Brett Alton&lt;/a&gt; you can ignore the last error about the windows
system driver&amp;rsquo;s failure to install, it should be harmless in non-GUI contexts.&lt;/p&gt;

&lt;p&gt;Now check the Guest additions &amp;lsquo;just work&amp;rsquo;:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="other"&gt;$&lt;/span&gt; vagrant halt
&lt;span class="other"&gt;$&lt;/span&gt; vagrant up
&lt;span class="other"&gt;[&lt;/span&gt;default&lt;span class="other"&gt;]&lt;/span&gt; VM already created&lt;span class="other"&gt;.&lt;/span&gt; Booting &lt;span class="r"&gt;if&lt;/span&gt; its not already running&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;
&lt;span class="other"&gt;[&lt;/span&gt;default&lt;span class="other"&gt;]&lt;/span&gt; Running any VM customizations&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;
&lt;span class="other"&gt;[&lt;/span&gt;default&lt;span class="other"&gt;]&lt;/span&gt; Clearing any previously &lt;span class="fu"&gt;set&lt;/span&gt; forwarded ports&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;
&lt;span class="other"&gt;[&lt;/span&gt;default&lt;span class="other"&gt;]&lt;/span&gt; Forwarding ports&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;
&lt;span class="other"&gt;[&lt;/span&gt;default&lt;span class="other"&gt;]&lt;/span&gt; &lt;span class="other"&gt;-&lt;/span&gt;&lt;span class="other"&gt;-&lt;/span&gt; ssh&lt;span class="other"&gt;:&lt;/span&gt; &lt;span class="number"&gt;22&lt;/span&gt; &lt;span class="other"&gt;=&lt;/span&gt;&amp;gt; &lt;span class="number"&gt;2222&lt;/span&gt; &lt;span class="other"&gt;(&lt;/span&gt;adapter &lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="other"&gt;)&lt;/span&gt;
&lt;span class="other"&gt;[&lt;/span&gt;default&lt;span class="other"&gt;]&lt;/span&gt; Cleaning previously &lt;span class="fu"&gt;set&lt;/span&gt; shared folders&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;
&lt;span class="other"&gt;[&lt;/span&gt;default&lt;span class="other"&gt;]&lt;/span&gt; Creating shared folders metadata&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;
&lt;span class="other"&gt;[&lt;/span&gt;default&lt;span class="other"&gt;]&lt;/span&gt; Booting VM&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;
&lt;span class="other"&gt;[&lt;/span&gt;default&lt;span class="other"&gt;]&lt;/span&gt; Waiting &lt;span class="r"&gt;for&lt;/span&gt; VM to boot&lt;span class="other"&gt;.&lt;/span&gt; This can take a few minutes&lt;span class="other"&gt;.&lt;/span&gt;
&lt;span class="other"&gt;[&lt;/span&gt;default&lt;span class="other"&gt;]&lt;/span&gt; VM booted and ready &lt;span class="r"&gt;for&lt;/span&gt; use&lt;span class="other"&gt;!&lt;/span&gt;
&lt;span class="other"&gt;[&lt;/span&gt;default&lt;span class="other"&gt;]&lt;/span&gt; Mounting shared folders&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;
&lt;span class="other"&gt;[&lt;/span&gt;default&lt;span class="other"&gt;]&lt;/span&gt; &lt;span class="other"&gt;-&lt;/span&gt;&lt;span class="other"&gt;-&lt;/span&gt; v&lt;span class="argument"&gt;-root&lt;/span&gt;&lt;span class="other"&gt;:&lt;/span&gt; &lt;span class="other"&gt;/&lt;/span&gt;vagrant&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Excellent.  No more warniings.&lt;/p&gt;

&lt;h2&gt;Package The New VM&lt;/h2&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="other"&gt;$&lt;/span&gt; vagrant halt
&lt;span class="other"&gt;$&lt;/span&gt; vagrant package
&lt;span class="other"&gt;$&lt;/span&gt; mv package&lt;span class="other"&gt;.&lt;/span&gt;box lucid64_4&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="other"&gt;0&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;&lt;span class="number"&gt;4&lt;/span&gt;&lt;span class="other"&gt;.&lt;/span&gt;box&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Done.&lt;/p&gt;

&lt;h2&gt;Caveats&lt;/h2&gt;

&lt;p&gt;An OSE version of guest additions seems to be only available via a Ubuntu package (&lt;code&gt;virtualbox-ose-guest-x11&lt;/code&gt;) that has an X11 dependency.
As of The Ruby gem &lt;code&gt;virtualbox-0.8.3&lt;/code&gt;: Running a non-OSE Guest on a OSE Host (both VitualBox v4.0.4), with non-OSE Guest Additions installed, leads to &lt;a href="https://github.com/mitchellh/virtualbox/issues/51"&gt;this issue&lt;/a&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://hedgehogshiatus.com/upgrade-virtualbox-guest-additions-in-a-vargr"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://hedgehogshiatus.com/upgrade-virtualbox-guest-additions-in-a-vargr#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HedgehogsPosterous/~4/WdOQiJRoQOQ" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/867340/hedgehog-avatar-384x384-composed.png</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/3sTwTZ0cSSuR</posterous:profileUrl>
        <posterous:firstName>Hedgehog</posterous:firstName>
        <posterous:lastName />
        <posterous:nickName>hedgehog</posterous:nickName>
        <posterous:displayName>Hedgehog</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://hedgehogshiatus.com/upgrade-virtualbox-guest-additions-in-a-vargr</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 14 Feb 2011 17:21:00 -0800</pubDate>
      <title>Chef issue 1526</title>
      <link>http://feedproxy.google.com/~r/HedgehogsPosterous/~3/MPaOQ-vAYmE/43081085</link>
      <guid isPermaLink="false">http://hedgehogshiatus.com/43081085</guid>
      <description>&lt;p&gt;
	&lt;p&gt;A quick post to address this &lt;a href="http://tickets.opscode.com/browse/CHEF-1526"&gt;Chef issue&lt;/a&gt;.
These issues (and more) can be resolved by using &lt;a href="https://github.com/hedgehog/bundler/tree/chef"&gt;this fork of Bundler&lt;/a&gt; that
targets the Chef use case.  I&amp;rsquo;ll cover this in another post, but fro now note
that this bundler fork is only intended for dealing with Chef Cookbook.
Hopefully it&amp;rsquo;ll get to the point where the Bundler team accept (or provide) the
requisite features.However, Bundler&amp;rsquo;s specs (and code base) make extending its
behavior a nightmare &amp;ndash; c.f Chef&amp;rsquo;s sweetness.&lt;/p&gt;

&lt;p&gt;Anyway, the issues&amp;hellip;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Cookbook is installed only if dependencies are present in the Gemfile.&lt;/li&gt;
&lt;li&gt;Installed dependencies are only updated if they have changed.&lt;/li&gt;
&lt;li&gt;Only cookbooks specified in a gemfile are downloaded.&lt;/li&gt;
&lt;li&gt;If you don&amp;rsquo;t specify dependencies, it gives &lt;em&gt;LOTS&lt;/em&gt; of warning about that missing cookbook&lt;/li&gt;
&lt;li&gt;Cookbooks are downloaded individually by branch, tag, or commit hash.&lt;/li&gt;
&lt;li&gt;Cookbooks can be downloaded from any Git Repository (e.g. &lt;a href="https://github.com/cookbooks"&gt;https://github.com/cookbooks&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;Cookbooks can be downloaded using Git clone recognized URI&amp;rsquo;s&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Outstanding:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Make pending specs pass (Bundler&amp;rsquo;s spec suite is a first class nightmare)&lt;/li&gt;
&lt;li&gt;Make &lt;code&gt;bundle update&lt;/code&gt; and &lt;code&gt;bundle show&lt;/code&gt; change into a folder pointed to by &lt;code&gt;--lockfile-path&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;The Gemfile&lt;/h3&gt;

&lt;p&gt;This where to list (just) the Cookbooks you want to download.
You can think of a Gemfile as describing an application stack.  Defining and
is as simple as listing the Cookbooks repos in the Gemfile &amp;ndash; to get the stack
configured and running is Chef&amp;rsquo;s domain of expertise.
You can download from just about any Git repository.  Most &lt;code&gt;git clone&lt;/code&gt; URI
syntax should work (but not path/file names with spaces &amp;ndash; i.e. it uses an unencoded file:// URI).
The Gemfile corresponding to Opscode&amp;rsquo;s &lt;a href="http://help.opscode.com/kb/otherhelp/build-a-rails-stack"&gt;build-a-rails-stack example&lt;/a&gt; is &lt;a href="https://gist.github.com/826633"&gt;shown in this gist&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Downloading the Cookbooks&lt;/h3&gt;

&lt;p&gt;The transript of downloading the build-a-rails-stack example&amp;rsquo;s cookbooks is &lt;a href="https://gist.github.com/826638"&gt;here&lt;/a&gt;.&lt;br /&gt;
Use &lt;code&gt;--gemfile&lt;/code&gt; to point at any file containing Gemfile data.
Download the Chef Cookbooks to any folder pointed to by &lt;code&gt;--install-path&lt;/code&gt;, if the folder
does not exist it will be created.  There will also be a lockfile created: &lt;a href="https://gist.github.com/826941"&gt;&lt;code&gt;Gemfile.lock&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Update the Cookbooks&lt;/h3&gt;

&lt;p&gt;The transript of updating the build-a-rails-stack example&amp;rsquo;s cookbooks is &lt;a href="https://gist.github.com/826654"&gt;here&lt;/a&gt;.&lt;br /&gt;
If there is no update nothing is downloaded, per the issue request. If you use Git commit hashes, then you can ensure your Cookbook(s) never change, e.g. when you are in production.
Currently you need to change into the folder containing the lockfile (&lt;code&gt;Gemfile.lock&lt;/code&gt;), created by &lt;code&gt;bundle install ...&lt;/code&gt; in the folder the &lt;code&gt;--gemfile ...&lt;/code&gt; option pointed to.&lt;/p&gt;

&lt;h3&gt;Show/List the Cookbooks and their Git hash.&lt;/h3&gt;

&lt;p&gt;The transript of the build-a-rails-stack example is &lt;a href="https://gist.github.com/826668"&gt;here&lt;/a&gt;.&lt;br /&gt;
As with updating, you need to change into the lockfile folder.&lt;/p&gt;

&lt;h3&gt;Missing a Cookbook dependency&lt;/h3&gt;

&lt;p&gt;Remove the couchdb entry from the Gemfile. This is required by Chef.
As we can see in &lt;a href="https://gist.github.com/826688"&gt;this gist&lt;/a&gt;, show, update and install behave in ways that
are not unreasonable for Chef users.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://hedgehogshiatus.com/43081085"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://hedgehogshiatus.com/43081085#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HedgehogsPosterous/~4/MPaOQ-vAYmE" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/867340/hedgehog-avatar-384x384-composed.png</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/3sTwTZ0cSSuR</posterous:profileUrl>
        <posterous:firstName>Hedgehog</posterous:firstName>
        <posterous:lastName />
        <posterous:nickName>hedgehog</posterous:nickName>
        <posterous:displayName>Hedgehog</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://hedgehogshiatus.com/43081085</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 13 Dec 2010 22:37:00 -0800</pubDate>
      <title>Carving and Bundling Chef Cookbooks - Alpha 2.</title>
      <link>http://feedproxy.google.com/~r/HedgehogsPosterous/~3/BBrgoDDWqNQ/carving-and-bundling-chef-cookbooks-alpha-2</link>
      <guid isPermaLink="false">http://hedgehogshiatus.com/carving-and-bundling-chef-cookbooks-alpha-2</guid>
      <description>&lt;p&gt;
	&lt;p&gt;My Bundler &lt;a href="https://github.com/hedgehog/bundler/tree/chef"&gt;fork&lt;/a&gt; can now provide the minimum functionality required to deliver
collections of cookbooks from any Git servers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Chef branch of my Bundler &lt;a href="https://github.com/hedgehog/bundler/tree/chef"&gt;fork&lt;/a&gt; now can install cookbooks without decorating
the folder name with a Git hash.  See below for some caveats.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;cc-&lt;/code&gt; prefix has been removed from the repo names.&lt;/li&gt;
&lt;li&gt;Version tags, based on the contents of &lt;code&gt;metadata.json&lt;/code&gt;, have been added to each repo.&lt;/li&gt;
&lt;li&gt;Some tweaks to the &lt;code&gt;cc.gemspec&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cc.gemspec&lt;/code&gt; has been added to each version tag. Infact this file was inserted to each
commit that contained the file &lt;code&gt;metadata.json&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Example 1: Rails Quick Start Gemfile Revisited.&lt;/h2&gt;

&lt;p&gt;The environement is Ruby 1.9.2 via &lt;a href="http://rvm.beginrescueend.com/"&gt;RVM&lt;/a&gt;, and assumes you&amp;rsquo;ve followed Opscode&amp;rsquo;s &lt;a href="http://help.opscode.com/faqs/start"&gt;getting started&lt;/a&gt;.
I&amp;rsquo;ll show the new Gemfile, built as described in the last post, that downloads the
Ruby-on-Rails quick start cookbooks&lt;/p&gt;

&lt;h3&gt;Getting setup.&lt;/h3&gt;

&lt;p&gt;&lt;div class="data type-shell"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;span rel="#L11" id="L11"&gt;11&lt;/span&gt;
&lt;span rel="#L12" id="L12"&gt;12&lt;/span&gt;
&lt;span rel="#L13" id="L13"&gt;13&lt;/span&gt;
&lt;span rel="#L14" id="L14"&gt;14&lt;/span&gt;
&lt;span rel="#L15" id="L15"&gt;15&lt;/span&gt;
&lt;span rel="#L16" id="L16"&gt;16&lt;/span&gt;
&lt;span rel="#L17" id="L17"&gt;17&lt;/span&gt;
&lt;span rel="#L18" id="L18"&gt;18&lt;/span&gt;
&lt;span rel="#L19" id="L19"&gt;19&lt;/span&gt;
&lt;span rel="#L20" id="L20"&gt;20&lt;/span&gt;
&lt;span rel="#L21" id="L21"&gt;21&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;rvm gemset create &lt;span class="nb"&gt;test&lt;/span&gt;-bundler-chef&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;span class="s1"&gt;&amp;#39;test-bundler-chef&amp;#39;&lt;/span&gt; gemset created &lt;span class="o"&gt;(&lt;/span&gt;/home/hedge/.rvm/gems/ruby-1.9.2-p0@test-bundler-chef&lt;span class="o"&gt;)&lt;/span&gt;.&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;gem list&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt;*** LOCAL GEMS ***&lt;/div&gt;&lt;div class="line" id="LC6"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC7"&gt;rake &lt;span class="o"&gt;(&lt;/span&gt;0.8.7&lt;span class="o"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC8"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git clone git://github.com/hedgehog/bundler.git&lt;/div&gt;&lt;div class="line" id="LC9"&gt;&amp;lt;snip&amp;gt;&lt;/div&gt;&lt;div class="line" id="LC10"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;pushd &lt;/span&gt;bundler&lt;/div&gt;&lt;div class="line" id="LC11"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git checkout chef&lt;/div&gt;&lt;div class="line" id="LC12"&gt;&amp;lt;snip&amp;gt;&lt;/div&gt;&lt;div class="line" id="LC13"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;rake install&lt;/div&gt;&lt;div class="line" id="LC14"&gt;&amp;lt;snip&amp;gt;&lt;/div&gt;&lt;div class="line" id="LC15"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;gem list&lt;/div&gt;&lt;div class="line" id="LC16"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC17"&gt;*** LOCAL GEMS ***&lt;/div&gt;&lt;div class="line" id="LC18"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC19"&gt;bundler &lt;span class="o"&gt;(&lt;/span&gt;1.0.7&lt;span class="o"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC20"&gt;rake &lt;span class="o"&gt;(&lt;/span&gt;0.8.7&lt;span class="o"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC21"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;h3&gt;Acquire Cookbooks&lt;/h3&gt;

&lt;p&gt;Build the Gemfile as described &lt;a href="http://hedgehogshiatus.com/carving-chefs-cookbooks"&gt;previously&lt;/a&gt;. This time, rather than tie our
cookbooks to the latest in the live branch, we can pull specific
versions of each cookbook &amp;ndash; pulling by Git reference hashes is also possible.
I worked out the version by inspecting all the &lt;code&gt;metadata.json&lt;/code&gt; under each
cookbook&amp;rsquo;s folder of Opscode&amp;rsquo;s rails-quick-start &lt;a href="https://github.com/opscode/rails-quick-start/tree/master/cookbooks"&gt;repo&lt;/a&gt;.
Note that without the hash decoration, or at least with the way I removed it,
Bundler is better able to work out several dependencies that it missed previously
(c.f. the following with the rails-quick-start.gemfile &lt;a href="http://hedgehogshiatus.com/carving-chefs-cookbooks"&gt;here&lt;/a&gt;):&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-ruby"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;span rel="#L11" id="L11"&gt;11&lt;/span&gt;
&lt;span rel="#L12" id="L12"&gt;12&lt;/span&gt;
&lt;span rel="#L13" id="L13"&gt;13&lt;/span&gt;
&lt;span rel="#L14" id="L14"&gt;14&lt;/span&gt;
&lt;span rel="#L15" id="L15"&gt;15&lt;/span&gt;
&lt;span rel="#L16" id="L16"&gt;16&lt;/span&gt;
&lt;span rel="#L17" id="L17"&gt;17&lt;/span&gt;
&lt;span rel="#L18" id="L18"&gt;18&lt;/span&gt;
&lt;span rel="#L19" id="L19"&gt;19&lt;/span&gt;
&lt;span rel="#L20" id="L20"&gt;20&lt;/span&gt;
&lt;span rel="#L21" id="L21"&gt;21&lt;/span&gt;
&lt;span rel="#L22" id="L22"&gt;22&lt;/span&gt;
&lt;span rel="#L23" id="L23"&gt;23&lt;/span&gt;
&lt;span rel="#L24" id="L24"&gt;24&lt;/span&gt;
&lt;span rel="#L25" id="L25"&gt;25&lt;/span&gt;
&lt;span rel="#L26" id="L26"&gt;26&lt;/span&gt;
&lt;span rel="#L27" id="L27"&gt;27&lt;/span&gt;
&lt;span rel="#L28" id="L28"&gt;28&lt;/span&gt;
&lt;span rel="#L29" id="L29"&gt;29&lt;/span&gt;
&lt;span rel="#L30" id="L30"&gt;30&lt;/span&gt;
&lt;span rel="#L31" id="L31"&gt;31&lt;/span&gt;
&lt;span rel="#L32" id="L32"&gt;32&lt;/span&gt;
&lt;span rel="#L33" id="L33"&gt;33&lt;/span&gt;
&lt;span rel="#L34" id="L34"&gt;34&lt;/span&gt;
&lt;span rel="#L35" id="L35"&gt;35&lt;/span&gt;
&lt;span rel="#L36" id="L36"&gt;36&lt;/span&gt;
&lt;span rel="#L37" id="L37"&gt;37&lt;/span&gt;
&lt;span rel="#L38" id="L38"&gt;38&lt;/span&gt;
&lt;span rel="#L39" id="L39"&gt;39&lt;/span&gt;
&lt;span rel="#L40" id="L40"&gt;40&lt;/span&gt;
&lt;span rel="#L41" id="L41"&gt;41&lt;/span&gt;
&lt;span rel="#L42" id="L42"&gt;42&lt;/span&gt;
&lt;span rel="#L43" id="L43"&gt;43&lt;/span&gt;
&lt;span rel="#L44" id="L44"&gt;44&lt;/span&gt;
&lt;span rel="#L45" id="L45"&gt;45&lt;/span&gt;
&lt;span rel="#L46" id="L46"&gt;46&lt;/span&gt;
&lt;span rel="#L47" id="L47"&gt;47&lt;/span&gt;
&lt;span rel="#L48" id="L48"&gt;48&lt;/span&gt;
&lt;span rel="#L49" id="L49"&gt;49&lt;/span&gt;
&lt;span rel="#L50" id="L50"&gt;50&lt;/span&gt;
&lt;span rel="#L51" id="L51"&gt;51&lt;/span&gt;
&lt;span rel="#L52" id="L52"&gt;52&lt;/span&gt;
&lt;span rel="#L53" id="L53"&gt;53&lt;/span&gt;
&lt;span rel="#L54" id="L54"&gt;54&lt;/span&gt;
&lt;span rel="#L55" id="L55"&gt;55&lt;/span&gt;
&lt;span rel="#L56" id="L56"&gt;56&lt;/span&gt;
&lt;span rel="#L57" id="L57"&gt;57&lt;/span&gt;
&lt;span rel="#L58" id="L58"&gt;58&lt;/span&gt;
&lt;span rel="#L59" id="L59"&gt;59&lt;/span&gt;
&lt;span rel="#L60" id="L60"&gt;60&lt;/span&gt;
&lt;span rel="#L61" id="L61"&gt;61&lt;/span&gt;
&lt;span rel="#L62" id="L62"&gt;62&lt;/span&gt;
&lt;span rel="#L63" id="L63"&gt;63&lt;/span&gt;
&lt;span rel="#L64" id="L64"&gt;64&lt;/span&gt;
&lt;span rel="#L65" id="L65"&gt;65&lt;/span&gt;
&lt;span rel="#L66" id="L66"&gt;66&lt;/span&gt;
&lt;span rel="#L67" id="L67"&gt;67&lt;/span&gt;
&lt;span rel="#L68" id="L68"&gt;68&lt;/span&gt;
&lt;span rel="#L69" id="L69"&gt;69&lt;/span&gt;
&lt;span rel="#L70" id="L70"&gt;70&lt;/span&gt;
&lt;span rel="#L71" id="L71"&gt;71&lt;/span&gt;
&lt;span rel="#L72" id="L72"&gt;72&lt;/span&gt;
&lt;span rel="#L73" id="L73"&gt;73&lt;/span&gt;
&lt;span rel="#L74" id="L74"&gt;74&lt;/span&gt;
&lt;span rel="#L75" id="L75"&gt;75&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="c1"&gt;# Useage:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;span class="c1"&gt;# bundle install --gemfile /your/stack/library/rails-quick-start.gemfile \&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;span class="c1"&gt;#                --install-path /your/chef-repo/cookbooks&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&lt;span class="c1"&gt;# &lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC6"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;apache2&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC7"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/apache2.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC8"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.12.3&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC9"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;application&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC10"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/application.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC11"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.7.0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC12"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;unicorn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC13"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/unicorn.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC14"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.1.3&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC15"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;passenger_enterprise&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC16"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/passenger_enterprise.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC17"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.4.2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC18"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;passenger_apache2&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC19"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/passenger_apache2.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC20"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.16.3&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC21"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;rails&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC22"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/rails.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC23"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.9.2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC24"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;packages&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC25"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/packages.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC26"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.9.2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC27"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;ruby&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC28"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/ruby.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC29"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.9.0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC30"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;ruby_enterprise&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC31"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/ruby_enterprise.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC32"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.2.3&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC33"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;runit&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC34"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/runit.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC35"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.14.1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC36"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;build-essential&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC37"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/build-essential.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC38"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.7.0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC39"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;nginx&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC40"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/nginx.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC41"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.14.3&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC42"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;rubygems&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC43"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/rubygems.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC44"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.2.0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC45"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;apt&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC46"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/apt.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC47"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.9.0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC48"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;aws&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC49"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/aws.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC50"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.10.1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC51"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;database&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC52"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/database.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC53"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.7.1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC54"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;xfs&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC55"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/xfs.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC56"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.1.0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC57"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;mysql&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC58"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/mysql.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC59"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.24.1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC60"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;openssl&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC61"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/openssl.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC62"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.1.0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC63"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC64"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/git.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC65"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.9.0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC66"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;haproxy&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC67"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/haproxy.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC68"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.8.1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC69"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;radiant&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC70"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/radiant.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC71"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.11.3&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC72"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;sqlite&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC73"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/sqlite.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC74"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:tag&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0.7.0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git_decorate&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC75"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; Bundler&amp;rsquo;s gem building from Git repo&amp;rsquo;s is still broken&amp;hellip;&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-shell"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;span rel="#L11" id="L11"&gt;11&lt;/span&gt;
&lt;span rel="#L12" id="L12"&gt;12&lt;/span&gt;
&lt;span rel="#L13" id="L13"&gt;13&lt;/span&gt;
&lt;span rel="#L14" id="L14"&gt;14&lt;/span&gt;
&lt;span rel="#L15" id="L15"&gt;15&lt;/span&gt;
&lt;span rel="#L16" id="L16"&gt;16&lt;/span&gt;
&lt;span rel="#L17" id="L17"&gt;17&lt;/span&gt;
&lt;span rel="#L18" id="L18"&gt;18&lt;/span&gt;
&lt;span rel="#L19" id="L19"&gt;19&lt;/span&gt;
&lt;span rel="#L20" id="L20"&gt;20&lt;/span&gt;
&lt;span rel="#L21" id="L21"&gt;21&lt;/span&gt;
&lt;span rel="#L22" id="L22"&gt;22&lt;/span&gt;
&lt;span rel="#L23" id="L23"&gt;23&lt;/span&gt;
&lt;span rel="#L24" id="L24"&gt;24&lt;/span&gt;
&lt;span rel="#L25" id="L25"&gt;25&lt;/span&gt;
&lt;span rel="#L26" id="L26"&gt;26&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;bundle install --gemfile /tmp/rails-quick-start.gemfile &lt;span class="se"&gt;\&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--install-path /tmp/rails-quick-start&lt;/div&gt;&lt;div class="line" id="LC3"&gt;Updating git://github.com/cookbooks/application.git&lt;/div&gt;&lt;div class="line" id="LC4"&gt;Updating git://github.com/cookbooks/unicorn.git&lt;/div&gt;&lt;div class="line" id="LC5"&gt;Updating git://github.com/cookbooks/passenger_enterprise.git&lt;/div&gt;&lt;div class="line" id="LC6"&gt;Updating git://github.com/cookbooks/passenger_apache2.git&lt;/div&gt;&lt;div class="line" id="LC7"&gt;Updating git://github.com/cookbooks/rails.git&lt;/div&gt;&lt;div class="line" id="LC8"&gt;Updating git://github.com/cookbooks/packages.git&lt;/div&gt;&lt;div class="line" id="LC9"&gt;Updating git://github.com/cookbooks/ruby.git&lt;/div&gt;&lt;div class="line" id="LC10"&gt;Updating git://github.com/cookbooks/ruby_enterprise.git&lt;/div&gt;&lt;div class="line" id="LC11"&gt;Updating git://github.com/cookbooks/runit.git&lt;/div&gt;&lt;div class="line" id="LC12"&gt;Updating git://github.com/cookbooks/build-essential.git&lt;/div&gt;&lt;div class="line" id="LC13"&gt;Updating git://github.com/cookbooks/nginx.git&lt;/div&gt;&lt;div class="line" id="LC14"&gt;Updating git://github.com/cookbooks/rubygems.git&lt;/div&gt;&lt;div class="line" id="LC15"&gt;Updating git://github.com/cookbooks/apt.git&lt;/div&gt;&lt;div class="line" id="LC16"&gt;Updating git://github.com/cookbooks/aws.git&lt;/div&gt;&lt;div class="line" id="LC17"&gt;Updating git://github.com/cookbooks/database.git&lt;/div&gt;&lt;div class="line" id="LC18"&gt;Updating git://github.com/cookbooks/xfs.git&lt;/div&gt;&lt;div class="line" id="LC19"&gt;Updating git://github.com/cookbooks/mysql.git&lt;/div&gt;&lt;div class="line" id="LC20"&gt;Updating git://github.com/cookbooks/openssl.git&lt;/div&gt;&lt;div class="line" id="LC21"&gt;Updating git://github.com/cookbooks/git.git&lt;/div&gt;&lt;div class="line" id="LC22"&gt;Updating git://github.com/cookbooks/haproxy.git&lt;/div&gt;&lt;div class="line" id="LC23"&gt;Updating git://github.com/cookbooks/radiant.git&lt;/div&gt;&lt;div class="line" id="LC24"&gt;Updating git://github.com/cookbooks/sqlite.git&lt;/div&gt;&lt;div class="line" id="LC25"&gt;Could not find apache2-0.12.3 in any of the sources&lt;/div&gt;&lt;div class="line" id="LC26"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;p&gt;Copy the &lt;code&gt;rails-quick-start.gemfile&lt;/code&gt; to &lt;code&gt;/path/to/chef-repo/rails-quick-start/&lt;/code&gt;,
point Bundler to the cookbooks folder, and run:&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-shell"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;span rel="#L11" id="L11"&gt;11&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;bundle install --gemfile /path/to/chef-repo/rails-quick-start.gemfile &lt;span class="se"&gt;\&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--install-path /path/to/chef-repo/rails-quick-start/cookbooks&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ls /path/to/chef-repo/rails-quick-start/cookbooks&lt;/div&gt;&lt;div class="line" id="LC5"&gt;apache2               database  passenger_apache2     runit&lt;/div&gt;&lt;div class="line" id="LC6"&gt;apache2-0173e252e689  git       passenger_enterprise  sqlite&lt;/div&gt;&lt;div class="line" id="LC7"&gt;application           haproxy   radiant               unicorn&lt;/div&gt;&lt;div class="line" id="LC8"&gt;apt                   mysql     rails                 xfs&lt;/div&gt;&lt;div class="line" id="LC9"&gt;aws                   nginx     ruby&lt;/div&gt;&lt;div class="line" id="LC10"&gt;build-essential       openssl   ruby_enterprise&lt;/div&gt;&lt;div class="line" id="LC11"&gt;cache                 packages  rubygems&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;p&gt;Now you should be good to continue with the rest of the Opscode rails-quick-start
how-to &amp;ndash; modulo version tagging issues.  This at least means my Bundler fork can now
provide the minimum functionality required to deliver collections of cookbooks
from any Git servers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt;  The folder &lt;code&gt;apache2-0173e252e689&lt;/code&gt; above is generated &lt;em&gt;after&lt;/em&gt; the
repository contents are installed &amp;ndash; I&amp;rsquo;m looking into this.  However, Bundler has no unit-specs
so trying to work out exactly how different parts are expected to behave is nigh
impossible.  But I&amp;rsquo;ll stop this topic now, before I get up a full head of steam&amp;hellip;.&lt;/p&gt;

&lt;h2&gt;Some TODOs&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bundle install&lt;/code&gt; from Git repos should not complain about gemspec missing from sources.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bundle update&lt;/code&gt; accept switches &lt;code&gt;--gemfile&lt;/code&gt; and &lt;code&gt;--install-path&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bundle check&lt;/code&gt; accept switch &lt;code&gt;--install-path&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bundle package&lt;/code&gt; accept switches &lt;code&gt;--gemfile&lt;/code&gt; and &lt;code&gt;--install-path&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://hedgehogshiatus.com/carving-and-bundling-chef-cookbooks-alpha-2"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://hedgehogshiatus.com/carving-and-bundling-chef-cookbooks-alpha-2#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HedgehogsPosterous/~4/BBrgoDDWqNQ" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/867340/hedgehog-avatar-384x384-composed.png</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/3sTwTZ0cSSuR</posterous:profileUrl>
        <posterous:firstName>Hedgehog</posterous:firstName>
        <posterous:lastName />
        <posterous:nickName>hedgehog</posterous:nickName>
        <posterous:displayName>Hedgehog</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://hedgehogshiatus.com/carving-and-bundling-chef-cookbooks-alpha-2</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 08 Dec 2010 00:44:00 -0800</pubDate>
      <title>Carving and Bundling Chef's Cookbooks - Alpha</title>
      <link>http://feedproxy.google.com/~r/HedgehogsPosterous/~3/ghCfrweV-k4/carving-chefs-cookbooks</link>
      <guid isPermaLink="false">http://hedgehogshiatus.com/carving-chefs-cookbooks</guid>
      <description>&lt;p&gt;
	&lt;p&gt;This is the introductory post about the repositories in the GitHub &lt;a href="https://github.com/cookbooks"&gt;Cookbooks&lt;/a&gt; account.
It (belatedly) addresses the topic &amp;ldquo;Centralized cookbook-library repos vs
distributed cookbook repos&amp;rdquo;, discussed in this &lt;a href="http://lists.opscode.com/sympa/arc/chef/2010-04/msg00044.html"&gt;thread&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I also describe unpleasant side effects of using Bundler 1.0.7 that are being worked on.&lt;br /&gt;
I&amp;rsquo;m in the process of trying to make Bundler accomodate Chef&amp;rsquo;s use case, hence the
Alpha tag on this post.  The reason why I&amp;rsquo;m describing something that is clearly
incomplete is in response to Indirect&amp;rsquo;s &lt;a href="https://github.com/carlhuda/bundler/issues/issue/898/#issue/898/comment/599103"&gt;question&lt;/a&gt; about the pain points of
using Bundler (as of &amp;lt;= 1.0.7, and possibly higher versions).&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;The Github &lt;a href="https://github.com/cookbooks"&gt;Cookbooks&lt;/a&gt; account repo&amp;rsquo;s are trial repo&amp;rsquo;s and should not yet be
forked since they &lt;em&gt;WILL&lt;/em&gt; be deleted and replaced, or abandoned if feedback (hint)
and experience dictates.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The objective is to carve individiual &lt;a href="http://opscode.com/"&gt;Chef&lt;/a&gt; cookbooks from the monolithic
cookbook-library repositories. The two cookbook-library repositories are those
of &lt;a href="https://github.com/opscode/cookbooks"&gt;Opscode&lt;/a&gt; and &lt;a href="https://github.com/37signals/37s_cookbooks"&gt;37Signals&lt;/a&gt;.
Doing this requires adopting some dependency management mechanism, since one reason for
these cookbook &amp;lsquo;silos&amp;rsquo; was as a quasi-dependency-management solution (see the mail
list discussion).&lt;/p&gt;

&lt;p&gt;Now, some details.&lt;/p&gt;

&lt;h2&gt;Chef cookbooks on Github:&lt;/h2&gt;

&lt;p&gt;Each &lt;a href="https://github.com/cookbooks"&gt;Cookbooks&lt;/a&gt; repo is a pure Git repo and initializing the repo using Niev&amp;rsquo;s
git-flow does not restrict you to using Niev&amp;rsquo;s git-flow.
An initial description of what this workflow &lt;em&gt;might&lt;/em&gt; look like in the context of
Chef wil be in another post if interest in these repos warrants this.
Anyway, it is nothing radically different from what is described &lt;a href="http://nvie.com/posts/a-successful-git-branching-model/"&gt;here&lt;/a&gt;.
Each repository name has a &lt;code&gt;cc-&lt;/code&gt; prefix to disambiguate it from the actual
application name, the Opscode/37 Signals repos, and to help when searching.
There are currently no wiki or gh-pages added, however it might be useful to add
a common howto page to each repo describing any best-practice workflows.&lt;br /&gt;
Please comment below or track-back to your blog-post about your suggestions/thoughts.&lt;/p&gt;

&lt;h2&gt;Bundler:&lt;/h2&gt;

&lt;p&gt;Bundler is just one way of gathering Chef cookbooks into the cookbooks folder of
the the local chef-repo &amp;ndash; from there they are uploaded to the Chef server via knife.
Bundler&amp;rsquo;s Gemfile allows you to set out the cookbooks you wish to gather to make up your
application stack, and eventually specify different groups of that stack in one
simple file.
The rational for choosing Bundler was: Grabbing Chef cookbooks for an
application stack should be as fine-grained and simple as:&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-shell"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;span rel="#L11" id="L11"&gt;11&lt;/span&gt;
&lt;span rel="#L12" id="L12"&gt;12&lt;/span&gt;
&lt;span rel="#L13" id="L13"&gt;13&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;cat &lt;span class="s"&gt;&amp;lt;&amp;lt;-EOT &amp;gt;/local/stacks/wordpress.gemfile&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;span class="s"&gt;    gem &amp;quot;cc-wordpress&amp;quot;, :git =&amp;gt; &amp;quot;git://github.com/cookbooks/cc-wordpress.git&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;span class="s"&gt;                        :ref =&amp;gt; &amp;#39;eb0203133d14587e90f4&amp;#39; &lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&lt;span class="s"&gt;    gem &amp;quot;cc-mysql&amp;quot;,     :git =&amp;gt; &amp;quot;git://github.com/cookbooks/cc-mysql.git&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt;&lt;span class="s"&gt;    gem &amp;quot;cc-apache2&amp;quot;,   :git =&amp;gt; &amp;quot;git://github.com/cookbooks/cc-apache2.git&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC6"&gt;&lt;span class="s"&gt;    gem &amp;quot;cc-php&amp;quot;,       :git =&amp;gt; &amp;quot;git://github.com/cookbooks/cc-php.git&amp;quot;, &lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC7"&gt;&lt;span class="s"&gt;                        :branch =&amp;gt; &amp;quot;qa&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC8"&gt;&lt;span class="s"&gt;    gem &amp;quot;cc-openssl&amp;quot;,   :git =&amp;amp;&amp;gt; &amp;quot;git://github.com/cookbooks/cc-openssl.git&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC9"&gt;&lt;span class="s"&gt;  EOT&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC10"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC11"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;bundle --gemfile /local/stacks/wordpress.gemfile &lt;span class="se"&gt;\&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC12"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--install-path /local/chef-repo/cookbooks/&lt;/div&gt;&lt;div class="line" id="LC13"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;p&gt;To get the above to work required adding the install-path feature to my &lt;a href="https://github.com/hedgehog/bundler/tree/chef"&gt;Bundler
fork&lt;/a&gt;, and shaving a herd of Yaks I bumped into.  If you&amp;rsquo;d like this feature added to
Bundler, please find and vote on, or open a Bundler issue.&lt;/p&gt;

&lt;p&gt;Now to the possibly contentious part.&lt;/p&gt;

&lt;p&gt;Each cookbook&amp;rsquo;s &lt;code&gt;metadata.json&lt;/code&gt; file is parsed in the gemspec file, &lt;code&gt;cc.gemspec&lt;/code&gt;.
This gemspec has generic contents, so it has a generic name to convey that point.
Nonetheless, &lt;code&gt;gem build cc.gemspec&lt;/code&gt; will generate a gem file with correct name &amp;ndash;
in case you have dreamed up some way of doing interesting things with Chef cookbook gems&amp;hellip;.
The &lt;code&gt;cc.gemspec&lt;/code&gt; is parsed by Bundler.  Consequently, the version requirements in the
&lt;code&gt;cc.gemspec&lt;/code&gt; are checked by Bundler inspecting the &lt;code&gt;cc.gemspec&lt;/code&gt; in each repo.&lt;/p&gt;

&lt;h2&gt;Potential benefits:&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Cookbook development can be more atomic, and each cookbook now has a dedicated issues forum.&lt;/li&gt;
&lt;li&gt;Cookbook changes/branches/tags/forks are more visible and cookbook commit history has been preserved&lt;/li&gt;
&lt;li&gt;A single repo houses both Opscode (&lt;code&gt;live&lt;/code&gt; and &lt;code&gt;qa&lt;/code&gt; branches) and 37 Signals (&lt;code&gt;37s&lt;/code&gt; branch) cookbooks. Cookbook styles (37 Signals c.f. Opscode) may converge more easily (merging commits between branches)&lt;/li&gt;
&lt;li&gt;The extracted repositories can be &lt;code&gt;bundle install&lt;/code&gt;ed into a local Chef repo using my Chef branch of &lt;a href="https://github.com/hedgehog/bundler/tree/chef"&gt;Bundler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repositories use Nvie&amp;rsquo;s Git workflow branching ideas in setting up &lt;code&gt;live&lt;/code&gt; and &lt;code&gt;qa&lt;/code&gt; branches.
Comments welcome on branch names &lt;code&gt;production&lt;/code&gt;, &lt;code&gt;development&lt;/code&gt; and &lt;code&gt;testing&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Each cookbooks dependency/version requirements are in the &lt;code&gt;cc.gemspec&lt;/code&gt; for Bundler to resolve&lt;/li&gt;
&lt;li&gt;Additional control/flexibility is obtained via Git forks, refs, tags and branches.
Cookbook deployment can be made from your fork&amp;rsquo;s latest master commit
down to the level of a reference hash.  You are no longer restricted to defining dependency by version numbers in the metadata
file.  This is more useful in dev and testing phases.&lt;/li&gt;
&lt;li&gt;Additional flexibility will be obtained from Bundlers &lt;a href="http://gembundler.com/groups.html"&gt;groups&lt;/a&gt;, elaborated &lt;a href="http://yehudakatz.com/2010/05/09/the-how-and-why-of-bundler-groups/"&gt;here&lt;/a&gt;.
Specifically, when Bundler supports different versions (Git hashes) between different groups.&lt;/li&gt;
&lt;li&gt;Different Cookbook &amp;lsquo;styles&amp;rsquo; (see &lt;a href="http://lists.opscode.com/sympa/arc/chef/2010-04/msg00044.html"&gt;here&lt;/a&gt;) coexist as a different branch,
e.g. the &lt;code&gt;37s&lt;/code&gt; branches for 37 Signals cookbooks.&lt;/li&gt;
&lt;li&gt;Additional opportunities for people to participate as maintainers/collaborators
of cookbooks they have a special interest in.&lt;/li&gt;
&lt;li&gt;Tagged cookbooks are, via GitHub download, easily accessible outside of Git&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Potential costs&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;More knowledgeable collaborators required to be active to review changes&lt;/li&gt;
&lt;li&gt;Cookbook styles (37 signals cf Opscode) may fragment further, see &lt;a href="http://lists.opscode.com/sympa/arc/chef/2010-04/msg00052.html"&gt;here&lt;/a&gt; for some discussion.&lt;/li&gt;
&lt;li&gt;Roles have to be explicit about which cookbook they are using.  This involves
more typing since Bundler delivers the cookbook decorated with a hash (I am
working to eliminate this).&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Example: The base role from Opscode rails-quick-start:&lt;/h3&gt;

&lt;p&gt;Using Opscode&amp;rsquo;s rails-quick-start repo the role description is:&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-ruby"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="nb"&gt;name&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;base&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Base role applied to all nodes.&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;span class="n"&gt;run_list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="s2"&gt;&amp;quot;recipe[apt]&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="s2"&gt;&amp;quot;recipe[git]&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC6"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="s2"&gt;&amp;quot;recipe[build-essential]&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC7"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="s2"&gt;&amp;quot;recipe[ruby]&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC8"&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;p&gt;Which with Bundler hash decoration would have to become this&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-ruby"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="nb"&gt;name&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;base&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Base role applied to all nodes.&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;span class="n"&gt;run_list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="s2"&gt;&amp;quot;recipe[cc-apt-0cb9519bf687]&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="s2"&gt;&amp;quot;recipe[cc-git-730475fa9847]&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC6"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="s2"&gt;&amp;quot;recipe[cc-build-essential-b458e6200289]&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC7"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="s2"&gt;&amp;quot;recipe[cc-ruby-e42796a7e807]&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC8"&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC9"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;p&gt;Furthermore this would have to be edited everytime you updated your cookbooks
with Bundler&amp;hellip; ouch.&lt;/p&gt;

&lt;h2&gt;The Yeast&lt;/h2&gt;

&lt;p&gt;In the thread &lt;a href="http://lists.opscode.com/sympa/arc/chef/2010-04/msg00044.html"&gt;&amp;ldquo;Centralized cookbook-library repos vs distributed cookbook repos&amp;rdquo;&lt;/a&gt;
Adam Jacob commented:&lt;/p&gt;

&lt;blockquote class="posterous_short_quote"&gt;&lt;p&gt;our job is to provide you guys the primitives you need to
be able to do things the way you want to do them&amp;hellip; it&amp;rsquo;s just me trying to
suss-out where the primitives are.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;This is a fantastic attitude, and I think that this usecase indicates that the
Chef primitives here are the version and dependency data, parsed from
&lt;code&gt;metadata.json&lt;/code&gt; to the &lt;code&gt;cc.gemspec&lt;/code&gt;.  Hopefully they can stay.&lt;br /&gt;
Additional primitives are&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;the Git forks/branches/references you pull from, but
that is an additional layer of flexibility outside of Chef&amp;rsquo;s scope, but within
Bundler&amp;rsquo;s scope.&lt;/li&gt;
&lt;li&gt;Chef environments c.f. Bundler groups. When (if?) Bundler allows different versions
between groups we will have the ability to &lt;code&gt;bundle install&lt;/code&gt; different Cookbook versions
into different Chef environments &amp;ndash; assuming Chef &gt; 0.9 accomodates this
(see this &lt;a href="http://lists.opscode.com/sympa/arc/chef/2010-12/msg00066.html"&gt;thread&lt;/a&gt; for a description of how this might work).  Until then, the notion of a group of Cookbooks is not fully
exploited.  It is not yet clear to me if Chef&amp;rsquo;s upcoming environments feature
will accomodate Bundler mapping (installing) its groups to Chef environments.
A the time of writing the Chef documents suggest an environment&amp;rsquo;s cookbooks are specified in a file.&lt;br /&gt;
Hopefully this will be answered in the positive in a Beta post on this topic.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Adam also summarises, correctly in my view, that there are three things teased out
in that thread.  I&amp;rsquo;ve inserted how I see Bundler+Git fitting in to the three:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&amp;ldquo;How do you discover cookbooks you want to use?&amp;rdquo;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cc-&lt;/code&gt; is the naming convention in Google/Github searches for cookbooks people have contributed.&lt;/li&gt;
&lt;li&gt;You feed Bundler a Gemfile you&amp;rsquo;ve been given describing the application
 stack you want installed and configured.&lt;/li&gt;
&lt;li&gt;Any Git server becomes one (not the) publishing/distribution platform for cookbooks.&lt;/li&gt;
&lt;li&gt;Github downloads provide non-git access (most useful when version tags are
 added to each repository.  The following cookbook would be extracted with folder name &lt;code&gt;cookbooks-cc-activemq-6f442c7&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;div class="data type-shell"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;wget --no-check-certificate -o qa-latest.tgz https://github.com/cookbooks/cc-activemq/tarball/qa-latest&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&amp;ldquo;How do you track them over time, and potentially make site-specific
changes, and track &lt;em&gt;those&lt;/em&gt; over time?&amp;rdquo;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A classical Git repo per cookbook, either upstream or, equivalently, someone&amp;rsquo;s
public|private fork, allows you to track site specific changes over time.
Hopefully, just until they get accepted back into the upstream repo.&lt;/li&gt;
&lt;li&gt;Cookbook tracking is explicitly controlled in the Gemfile, and can be at
the level of Git forks, branches, tags, or tree hashes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;ldquo;How do you track and resolve the dependencies one cookbook has on another?&amp;rdquo;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;According to a cookbooks metadata &lt;em&gt;and&lt;/em&gt; the Git fork/branch/tag/hash you
pull from, as parsed from the cc.gemspec and Gemfile, and resolved by Bundler.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Example: Grabbing the rails-quick-start cookbooks&lt;/h2&gt;

&lt;p&gt;The environement is Ruby 1.9.2 via &lt;a href="http://rvm.beginrescueend.com/"&gt;RVM&lt;/a&gt;. And assumes you&amp;rsquo;ve followed Opscode&amp;rsquo;s &lt;a href="http://help.opscode.com/faqs/start"&gt;getting started&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ll demonstrate grabbing the Ruby-on-Rails quick start cookbooks, without the
Amazon EC2 details.
See &lt;a href="http://help.opscode.com/faqs/otherhelp/rails-quick-start"&gt;here&lt;/a&gt; for full detail on the EC2 instructions.&lt;/p&gt;

&lt;h3&gt;Acquire Cookbooks&lt;/h3&gt;

&lt;p&gt;What follows is one way to describe application stacks.  The Gemfile created is an alternative to&lt;br /&gt;
setting up cookbooks in a dedicated repository like: &lt;a href="https://github.com/opscode/rails-quick-start"&gt;rails-quick-start&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Gemfile construction steps&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Add one cookbook (:branch =&gt; &amp;lsquo;live&amp;rsquo;) listed in the rails-quick-start&amp;rsquo;s cookbooks folder.&lt;/li&gt;
&lt;li&gt;Running Bundler&amp;rsquo;s install during construction of Gemfile:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;div class="data type-shell"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /path/to/rails-quick-start&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;bundle install --gemfile rails-quick-start.gemfile &lt;/div&gt;&lt;div class="line" id="LC3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--install-path /tmp/rqs/ckbks&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding missing dependencies (indented) or, if none, adding the next cookbook.

&lt;ul&gt;
&lt;li&gt;Not done here, but you could change the &lt;code&gt;:branch&lt;/code&gt; to a &lt;code&gt;:ref&lt;/code&gt; once the application stack is confirmed as working.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Running Bundler&amp;rsquo;s install to point to the finished cookbook repo:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;div class="data type-shell"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;bundle install --gemfile rails-quick-start.gemfile &lt;/div&gt;&lt;div class="line" id="LC2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--install-path ~/chef/chef-repo/rails-quick-start/cookbooks&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;p&gt;The finished Gemfile, rails-quick-start.gemfile, looks like this:&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-ruby"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;span rel="#L11" id="L11"&gt;11&lt;/span&gt;
&lt;span rel="#L12" id="L12"&gt;12&lt;/span&gt;
&lt;span rel="#L13" id="L13"&gt;13&lt;/span&gt;
&lt;span rel="#L14" id="L14"&gt;14&lt;/span&gt;
&lt;span rel="#L15" id="L15"&gt;15&lt;/span&gt;
&lt;span rel="#L16" id="L16"&gt;16&lt;/span&gt;
&lt;span rel="#L17" id="L17"&gt;17&lt;/span&gt;
&lt;span rel="#L18" id="L18"&gt;18&lt;/span&gt;
&lt;span rel="#L19" id="L19"&gt;19&lt;/span&gt;
&lt;span rel="#L20" id="L20"&gt;20&lt;/span&gt;
&lt;span rel="#L21" id="L21"&gt;21&lt;/span&gt;
&lt;span rel="#L22" id="L22"&gt;22&lt;/span&gt;
&lt;span rel="#L23" id="L23"&gt;23&lt;/span&gt;
&lt;span rel="#L24" id="L24"&gt;24&lt;/span&gt;
&lt;span rel="#L25" id="L25"&gt;25&lt;/span&gt;
&lt;span rel="#L26" id="L26"&gt;26&lt;/span&gt;
&lt;span rel="#L27" id="L27"&gt;27&lt;/span&gt;
&lt;span rel="#L28" id="L28"&gt;28&lt;/span&gt;
&lt;span rel="#L29" id="L29"&gt;29&lt;/span&gt;
&lt;span rel="#L30" id="L30"&gt;30&lt;/span&gt;
&lt;span rel="#L31" id="L31"&gt;31&lt;/span&gt;
&lt;span rel="#L32" id="L32"&gt;32&lt;/span&gt;
&lt;span rel="#L33" id="L33"&gt;33&lt;/span&gt;
&lt;span rel="#L34" id="L34"&gt;34&lt;/span&gt;
&lt;span rel="#L35" id="L35"&gt;35&lt;/span&gt;
&lt;span rel="#L36" id="L36"&gt;36&lt;/span&gt;
&lt;span rel="#L37" id="L37"&gt;37&lt;/span&gt;
&lt;span rel="#L38" id="L38"&gt;38&lt;/span&gt;
&lt;span rel="#L39" id="L39"&gt;39&lt;/span&gt;
&lt;span rel="#L40" id="L40"&gt;40&lt;/span&gt;
&lt;span rel="#L41" id="L41"&gt;41&lt;/span&gt;
&lt;span rel="#L42" id="L42"&gt;42&lt;/span&gt;
&lt;span rel="#L43" id="L43"&gt;43&lt;/span&gt;
&lt;span rel="#L44" id="L44"&gt;44&lt;/span&gt;
&lt;span rel="#L45" id="L45"&gt;45&lt;/span&gt;
&lt;span rel="#L46" id="L46"&gt;46&lt;/span&gt;
&lt;span rel="#L47" id="L47"&gt;47&lt;/span&gt;
&lt;span rel="#L48" id="L48"&gt;48&lt;/span&gt;
&lt;span rel="#L49" id="L49"&gt;49&lt;/span&gt;
&lt;span rel="#L50" id="L50"&gt;50&lt;/span&gt;
&lt;span rel="#L51" id="L51"&gt;51&lt;/span&gt;
&lt;span rel="#L52" id="L52"&gt;52&lt;/span&gt;
&lt;span rel="#L53" id="L53"&gt;53&lt;/span&gt;
&lt;span rel="#L54" id="L54"&gt;54&lt;/span&gt;
&lt;span rel="#L55" id="L55"&gt;55&lt;/span&gt;
&lt;span rel="#L56" id="L56"&gt;56&lt;/span&gt;
&lt;span rel="#L57" id="L57"&gt;57&lt;/span&gt;
&lt;span rel="#L58" id="L58"&gt;58&lt;/span&gt;
&lt;span rel="#L59" id="L59"&gt;59&lt;/span&gt;
&lt;span rel="#L60" id="L60"&gt;60&lt;/span&gt;
&lt;span rel="#L61" id="L61"&gt;61&lt;/span&gt;
&lt;span rel="#L62" id="L62"&gt;62&lt;/span&gt;
&lt;span rel="#L63" id="L63"&gt;63&lt;/span&gt;
&lt;span rel="#L64" id="L64"&gt;64&lt;/span&gt;
&lt;span rel="#L65" id="L65"&gt;65&lt;/span&gt;
&lt;span rel="#L66" id="L66"&gt;66&lt;/span&gt;
&lt;span rel="#L67" id="L67"&gt;67&lt;/span&gt;
&lt;span rel="#L68" id="L68"&gt;68&lt;/span&gt;
&lt;span rel="#L69" id="L69"&gt;69&lt;/span&gt;
&lt;span rel="#L70" id="L70"&gt;70&lt;/span&gt;
&lt;span rel="#L71" id="L71"&gt;71&lt;/span&gt;
&lt;span rel="#L72" id="L72"&gt;72&lt;/span&gt;
&lt;span rel="#L73" id="L73"&gt;73&lt;/span&gt;
&lt;span rel="#L74" id="L74"&gt;74&lt;/span&gt;
&lt;span rel="#L75" id="L75"&gt;75&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="c1"&gt;# Useage:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;span class="c1"&gt;# bundle install --gemfile /your/stack/library/rails-quick-start.gemfile \&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;span class="c1"&gt;#                --install-path /your/chef-repo/cookbooks&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&lt;span class="c1"&gt;# &lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC6"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-apache2&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC7"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-apache2.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC8"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC9"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-application&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC10"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-application.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC11"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC12"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-unicorn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC13"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-unicorn.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC14"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC15"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-passenger_enterprise&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC16"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-passenger_enterprise.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC17"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC18"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-passenger_apache2&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC19"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-passenger_apache2.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC20"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC21"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-ruby_enterprise&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC22"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-ruby_enterprise.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC23"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC24"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-runit&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC25"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-runit.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC26"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC27"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-build-essential&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC28"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-build-essential.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC29"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC30"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-apt&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC31"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-apt.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC32"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC33"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-aws&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC34"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-aws.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC35"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC36"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-database&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC37"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-database.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC38"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC39"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC40"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-git.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC41"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC42"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-haproxy&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC43"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-haproxy.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC44"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC45"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-mysql&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC46"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-mysql.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC47"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC48"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-nginx&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC49"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-nginx.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC50"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC51"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-openssl&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC52"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-openssl.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC53"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC54"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-packages&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC55"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-packages.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC56"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC57"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-radiant&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC58"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-radiant.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC59"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC60"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-rails&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC61"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-rails.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC62"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC63"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-ruby&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC64"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-ruby.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC65"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC66"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-rubygems&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC67"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-rubygems.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC68"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC69"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-sqlite&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC70"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-sqlite.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC71"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC72"&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;cc-xfs&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC73"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;git://github.com/cookbooks/cc-xfs.git&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC74"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="ss"&gt;:branch&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;live&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC75"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;h3&gt;Download to your cookbooks folder&lt;/h3&gt;

&lt;p&gt;&lt;div class="data type-shell"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;span rel="#L11" id="L11"&gt;11&lt;/span&gt;
&lt;span rel="#L12" id="L12"&gt;12&lt;/span&gt;
&lt;span rel="#L13" id="L13"&gt;13&lt;/span&gt;
&lt;span rel="#L14" id="L14"&gt;14&lt;/span&gt;
&lt;span rel="#L15" id="L15"&gt;15&lt;/span&gt;
&lt;span rel="#L16" id="L16"&gt;16&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;bundle install --gemfile /path/to/rails-quick-start.gemfile &lt;span class="se"&gt;\&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--install-path /path/to/rails-quick-start/cookbooks&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ls /path/to/rails-quick-start/cookbooks&lt;/div&gt;&lt;div class="line" id="LC5"&gt;cache                            cc-packages-35e85e0ab6b2&lt;/div&gt;&lt;div class="line" id="LC6"&gt;cc-apache2-490a410a8a38          cc-passenger_apache2-ef5688ef1e51&lt;/div&gt;&lt;div class="line" id="LC7"&gt;cc-application-144f665d1e52      cc-passenger_enterprise-ce23f03ac342&lt;/div&gt;&lt;div class="line" id="LC8"&gt;cc-apt-0cb9519bf687              cc-radiant-38c2de357868&lt;/div&gt;&lt;div class="line" id="LC9"&gt;cc-aws-502ce059e3e2              cc-rails-564b986e7bd7&lt;/div&gt;&lt;div class="line" id="LC10"&gt;cc-build-essential-b458e6200289  cc-ruby-e42796a7e807&lt;/div&gt;&lt;div class="line" id="LC11"&gt;cc-database-1dcc49afc3ad         cc-ruby_enterprise-662be867cbeb&lt;/div&gt;&lt;div class="line" id="LC12"&gt;cc-git-730475fa9847              cc-rubygems-85617ddffa08&lt;/div&gt;&lt;div class="line" id="LC13"&gt;cc-haproxy-bfb669c013e2          cc-runit-eb70fb557938&lt;/div&gt;&lt;div class="line" id="LC14"&gt;cc-mysql-a6034592d159            cc-sqlite-c24a6b87b12e&lt;/div&gt;&lt;div class="line" id="LC15"&gt;cc-nginx-bfa943be18fd            cc-unicorn-254419ebec0c&lt;/div&gt;&lt;div class="line" id="LC16"&gt;cc-openssl-b3fec75435cc          cc-xfs-b01c94e4daf7&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;h2&gt;Kitchen sinks&lt;/h2&gt;

&lt;p&gt;At the moment Opscode and 37 Signals have single repo&amp;rsquo;s with multiple cookboooks.
You could replicate their current respositories by creating a superproject with
each of the repositories at &lt;a href="https://github.com/cookbooks"&gt;Cookbooks&lt;/a&gt; as a submodule.
In fact, you could have one repo with: live, qa, and 37s branches.
Each branch corresponding to the branches in the individual repos.&lt;br /&gt;
As they say in the Math&amp;rsquo;s books  &amp;lsquo;We leave this as an exercise for the reader&amp;rsquo;.&lt;/p&gt;

&lt;h2&gt;WIP Caveats&lt;/h2&gt;

&lt;p&gt;The current repository structure can be used, with some pain in the case of Bundler.&lt;br /&gt;
When downloaded via bundler, changes to recipe names in role files would be
required, so would only be useful in production settings &amp;ndash; where you want to
pin a cookbook down.&lt;/p&gt;

&lt;h3&gt;Note 1:&lt;/h3&gt;

&lt;p&gt;Currently some work is still needed on Bundler for it to be used painlessly.
 &amp;ndash; The hash decoration of the folder names needs to be eliminated, or accept an
   alias
 &amp;ndash; &lt;code&gt;bundle update&lt;/code&gt; and &lt;code&gt;bundle check&lt;/code&gt; should accept &lt;code&gt;--gemfile&lt;/code&gt; and &lt;code&gt;--install-path&lt;/code&gt;
 &amp;ndash; &lt;code&gt;bundle&lt;/code&gt; could accept a &lt;code&gt;--with&lt;/code&gt; counterpart to &lt;code&gt;--without&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;Note 2:&lt;/h3&gt;

&lt;p&gt;There is a &lt;a href="https://github.com/carlhuda/bundler/issuesearch?state=open&amp;amp;q=pack#issue/67"&gt;bug&lt;/a&gt; in how Bundler handles Gem specification files in Git repositories.
Consequently, you&amp;rsquo;ll see this error once dependencies have been resolved for a
gem:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;Source does not contain any versions of &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;cc- (&amp;gt;= 0, runtime)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;In which case add the next cookbook in step (3).
This has the side effect of not generating the lock file which, when the bug is
fixed, the lock file will be a very handy way of finding the hash &amp;ndash; in case you
want to pin your cookbooks that precisely.&lt;/p&gt;

&lt;h3&gt;Note 3:&lt;/h3&gt;

&lt;p&gt;Another limiation of Bundler 1.0 is that you cannot have different versions in
different groups.  This has been mentioned on the maillist, and may change, but
is not explicitly listed as an upcoming feature in the issues tracker.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://hedgehogshiatus.com/carving-chefs-cookbooks"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://hedgehogshiatus.com/carving-chefs-cookbooks#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HedgehogsPosterous/~4/ghCfrweV-k4" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/867340/hedgehog-avatar-384x384-composed.png</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/3sTwTZ0cSSuR</posterous:profileUrl>
        <posterous:firstName>Hedgehog</posterous:firstName>
        <posterous:lastName />
        <posterous:nickName>hedgehog</posterous:nickName>
        <posterous:displayName>Hedgehog</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://hedgehogshiatus.com/carving-chefs-cookbooks</feedburner:origLink></item>
  </channel>
</rss>

