<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Robby on Rails: Tag subversion</title>
    <link>http://www.robbyonrails.com/articles/tag/subversion</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>thoughts.sort_by{|t| t[:topic]}.collect </description>
    <item>
      <title>Interviewed by Hanselminutes</title>
      <description>&lt;p&gt;Earlier this week, Scott Hanselman from &lt;a href="http://www.hanselminutes.com/"&gt;Hanselminutes&lt;/a&gt; came down to the &lt;a href="http://planetargon.com/"&gt;Planet Argon&lt;/a&gt; studio to interview Andy, Gary, and myself about adoption of &lt;a href="http://www.hanselminutes.com/"&gt;Git&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.hanselminutes.com/default.aspx?showID=126"&gt;&lt;img src="http://img.skitch.com/20080411-ty71fcsin2d59x32csn5hk1w.preview.jpg" alt="Hanselminutes" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;The &lt;a href="http://www.hanselminutes.com/default.aspx?showID=126"&gt;podcast interview is available online now&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Thanks for stopping by Scott!&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;update&lt;/strong&gt;: I&amp;#8217;d recommend that you also check out &lt;a href="http://www.hanselminutes.com/default.aspx?showID=82"&gt;another episode&lt;/a&gt; of Hanselminutes when he sat down to speak with David Heinemeier Hansson and Martin Fowler.&lt;/p&gt;
</description>
      <pubDate>Fri, 11 Apr 2008 08:31:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4ce4ff81-3b48-4c19-83ef-2278f8ec5c56</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/04/11/interviewed-by-hanselminutes</link>
      <category>PLANET ARGON</category>
      <category>git</category>
      <category>subversion</category>
      <category>interview</category>
      <category>gary</category>
      <category>andy</category>
    </item>
    <item>
      <title>git-svn is a gateway drug</title>
      <description>&lt;p&gt;As we&amp;#8217;re migrating away from Subversion to Git, I&amp;#8217;m having to learn a lot about &lt;code&gt;git-svn&lt;/code&gt;. Andy has &lt;a href="http://andy.delcambre.com/2008/3/4/git-svn-workflow"&gt;posted a few articles&lt;/a&gt; on this topic, but I wanted to share a quick tip that I find myself forgetting.&lt;/p&gt;


	&lt;h2&gt;Working with Subversion branches&lt;/h2&gt;


	&lt;p&gt;While you&amp;#8217;re hopefully already familiar with how great &lt;strong&gt;local branches&lt;/strong&gt; are with Git, you might not know that you can connect local branches to &lt;strong&gt;remote&lt;/strong&gt; branches in your Subversion repository. This allows those of us who are using Git locally to work against Subversion branches.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m going to assume the following:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Your team is using Subversion&lt;/li&gt;
		&lt;li&gt;Your team already has a branch that you&amp;#8217;re working in&lt;/li&gt;
		&lt;li&gt;Your team is following Subversion directory conventions (&lt;code&gt;branches/&lt;/code&gt;, &lt;code&gt;tags/&lt;/code&gt;, and &lt;code&gt;trunk/&lt;/code&gt;)&lt;/li&gt;
		&lt;li&gt;You have Git installed (&lt;em&gt;with &lt;span class="caps"&gt;SVN&lt;/span&gt; extensions&lt;/em&gt;)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h3&gt;Checkout the Subversion project with Git&lt;/h3&gt;


	&lt;p&gt;Please visit Andy&amp;#8217;s tutorial, &lt;a href="http://andy.delcambre.com/2008/3/4/git-svn-workflow"&gt;Git &lt;span class="caps"&gt;SVN&lt;/span&gt; Workflow&lt;/a&gt;, for a more detailed explanation of the following commands.&lt;/p&gt;


	&lt;p&gt;First, we&amp;#8217;ll initialize your new local Git repository with &lt;code&gt;git-svn&lt;/code&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  git svn init -s http://svn.yourdomain.com/repos/project_name
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, you&amp;#8217;ll change directories to your new Git repository.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  cd project_name
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Let&amp;#8217;s fetch all previous revisions into your local repository&lt;sup&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  git svn fetch
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Great, once this is done&amp;#8230; you&amp;#8217;re &lt;strong&gt;master&lt;/strong&gt; (local) branch is linked to &lt;code&gt;trunk/&lt;/code&gt;.&lt;/p&gt;


	&lt;h3&gt;Mapping a local repository to a remote branch&lt;/h3&gt;


	&lt;p&gt;Assuming that your team is working in a Subversion branch on the current iteration of work. Our team has a naming convention for branches for each iteration. For example, if we&amp;#8217;re in Iteration 18, we&amp;#8217;ll write this as &lt;span class="caps"&gt;ITER&lt;/span&gt;-018 everywhere (Basecamp, Lighthouse, Subversion, etc&amp;#8230;). At the start of each iteration, we create a new branch with this naming convention.&lt;/p&gt;


	&lt;p&gt;For &lt;code&gt;ITER-018&lt;/code&gt;, the Subversion branch would be located at:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;http://svn.yourdomain.com/repos/project_name/branches/ITER-018&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;If you were to do a &lt;code&gt;git branch -r&lt;/code&gt;, you should see &lt;code&gt;ITER-018&lt;/code&gt; show up in the list. Now, the one thing that wasn&amp;#8217;t clear when I first read the &lt;code&gt;git-svn&lt;/code&gt; documentation was that you can&amp;#8217;t just checkout that branch with one command. In fact, this has tripped me up a few times.&lt;/p&gt;


	&lt;p&gt;First, you&amp;#8217;ll need to checkout a new &lt;em&gt;local&lt;/em&gt; branch. I&amp;#8217;ve opted to come up with my own convention for &lt;em&gt;local branches&lt;/em&gt; and in this case, I&amp;#8217;ll name it &lt;code&gt;iter_018&lt;/code&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  git co -b iter_018
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;So, now I&amp;#8217;m in the iter_018 branch, which is local. I&amp;#8217;m currently still mapped to &lt;code&gt;trunk/&lt;/code&gt;, which isn&amp;#8217;t what we want. However, all we need to do is reset where Git is currently pointed to. We can run &lt;a href="http://andy.delcambre.com/2008/3/12/git-reset-in-depth"&gt;git reset&lt;/a&gt; to point this to the &lt;span class="caps"&gt;ITER&lt;/span&gt;-018 branch.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  git reset --hard ITER-018
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;That&amp;#8217;s it! Now, the local &lt;code&gt;iter_018&lt;/code&gt; branch will point to &lt;code&gt;branches/ITER-018&lt;/code&gt; in your Subversion repository. This will allow you to work with your existing repository branch and still reap the benefits of local Git repositories.&lt;/p&gt;


	&lt;h3&gt;What about master?&lt;/h3&gt;


	&lt;p&gt;Good question. The &lt;code&gt;git reset&lt;/code&gt; command that you ran will &lt;span class="caps"&gt;ONLY&lt;/span&gt; apply that that individual local branch. So, master is &lt;em&gt;still&lt;/em&gt; pointing to &lt;code&gt;trunk/&lt;/code&gt;. This will allow you to have several local branches that map to remote branches.&lt;/p&gt;


	&lt;h2&gt;Next Steps&amp;#8230;&lt;/h2&gt;


	&lt;p&gt;If you&amp;#8217;re working with Git already.. great!&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re working in an environment that using Subversion, &lt;code&gt;git svn&lt;/code&gt; provides you the ability to start exploring Git without making your entire team switchover. Perhaps your a consultant and working for a client that uses Subversion&amp;#8230; no problem!&lt;/p&gt;


	&lt;p&gt;We&amp;#8217;re still using Subversion for past client projects and are considering &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt;, which &lt;a href="http://github.com/blog/40-we-launched"&gt;just launched (to the public) today&lt;/a&gt; for future projects. A few of us are already using GitHub for open source projects.&lt;/p&gt;


	&lt;p&gt;Fun.. I just saw the following tweet pass by as I began to wrap up this post.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/jeh1/rails-on-github"&gt;&lt;img src="http://img.skitch.com/20080411-rgageidq82ak6ij952ppant4u9.preview.jpg" alt="rails on github" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;&lt;a href="http://github.com/rails/"&gt;Check out Rails on GitHub!&lt;/a&gt;&lt;/p&gt;


	&lt;h3&gt;The Gateway Drug&amp;#8230; Git reminds me of Cake&lt;/h3&gt;


&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/g0GxUxKZdHk&amp;#38;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/g0GxUxKZdHk&amp;#38;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;

	&lt;h3&gt;Questions?&lt;/h3&gt;


	&lt;p&gt;I know that I glossed over a few things, so feel free to post questions and/or tips for others who are looking to dabble with Git.&lt;/p&gt;


	&lt;p id="fn1"&gt;&lt;sup&gt;1&lt;/sup&gt; You&amp;#8217;ll likely have problems if you don&amp;#8217;t have a Git authors file specified in your git config.&lt;/p&gt;
</description>
      <pubDate>Thu, 10 Apr 2008 22:28:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:cea369ee-eed9-4ec3-a0e9-91421f590dd7</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/04/10/git-svn-is-a-gateway-drug</link>
      <category>Ruby on Rails</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>git</category>
      <category>rubyonrails</category>
      <category>subversion</category>
      <category>github</category>
    </item>
    <item>
      <title>I am forking Rails</title>
      <description>&lt;p&gt;...well, creating a fork on GitHub. ;-)&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/e32x/fork-rails"&gt;&lt;img src="http://img.skitch.com/20080402-7jfqp4wbc4h32q3cwysaincfa.preview.jpg" alt="fork rails" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;It appears that Rails is moving from Subversion to Git!&lt;/p&gt;


	&lt;p&gt;Courtenay posted &lt;a href="http://blog.caboo.se/articles/2008/4/2/it-s-official-rails-moves-to-git"&gt;this&lt;/a&gt; a little while ago.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
git clone git://github.com/rails/rails.git
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Check it out the &lt;a href="http://github.com/rails"&gt;Ruby on Rails project&lt;/a&gt; on GitHub.&lt;/p&gt;


	&lt;p&gt;Start working on your next patch with git&amp;#8230;&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
git clone git://github.com/rails/rails.git
cd rails
git br -a
git br my_patch
git co my_patch
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This is cool news. :-)&lt;/p&gt;
</description>
      <pubDate>Wed, 02 Apr 2008 15:01:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:d06a69ee-8006-480f-92f7-6c0c3f53e9e6</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/04/02/forking-rails</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>git</category>
      <category>rubyonrails</category>
      <category>subversion</category>
      <category>github</category>
    </item>
    <item>
      <title>Learning Git without getting your SVN feet wet</title>
      <description>&lt;p&gt;Our team has been migrating towards using &lt;a href="http://git.or.cz/"&gt;Git&lt;/a&gt; as our primary &lt;span class="caps"&gt;SCM&lt;/span&gt;. We have way too many Subversion-based projects and repositories to just do a clean switch over and not everybody on the team has had time to start playing with it. Baby-steps&amp;#8230;&lt;/p&gt;


	&lt;p&gt;So, for those of us who want to use it day-to-day, we&amp;#8217;re using &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html"&gt;git-svn&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://andy.delcambre.com/"&gt;Andy Delcambre&lt;/a&gt; has posted the first in a series of blog articles to help you pick up on using Git on Subversion-based projects. Check out his article, &lt;a href="http://andy.delcambre.com/2008/3/4/git-svn-workflow"&gt;Git &lt;span class="caps"&gt;SVN&lt;/span&gt; workflow&lt;/a&gt; to get up to speed.&lt;/p&gt;


	&lt;p&gt;Also, if you&amp;#8217;re on &lt;span class="caps"&gt;OSX&lt;/span&gt; and using Git&amp;#8230; check out &lt;a href="http://alternateidea.com"&gt;Justin Palmer&amp;#8217;s&lt;/a&gt; new project, &lt;a href="http://github.com/Caged/gitnub/wikis/home"&gt;GitNub&lt;/a&gt;, which describes itself as, &amp;#8220;a Gitk-like application written in RubyCocoa that looks like it belongs on a Mac.&amp;#8221; This looks promising. :-)&lt;/p&gt;
</description>
      <pubDate>Tue, 11 Mar 2008 01:59:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:00328f04-0b81-4c29-9915-1f4e729ae317</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/03/11/learning-git-without-getting-your-svn-feet-wet</link>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>git</category>
      <category>subversion</category>
      <category>svn</category>
      <category>scm</category>
      <category>code</category>
      <category>planetargon</category>
      <category>andy</category>
      <category>gitnub</category>
    </item>
    <item>
      <title>Launch your own RubyURL</title>
      <description>&lt;p&gt;A few weeks ago, I moved &lt;a href="http://rubyurl.com"&gt;RubyURL&lt;/a&gt; from subversion to git. During that process, I decided to use my invite to &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt; and have decided to go ahead and open up the source code.&lt;/p&gt;


	&lt;p&gt;It&amp;#8217;s currently a whopping 92 &lt;span class="caps"&gt;LOC&lt;/span&gt; with a 1:2.5 code to spec ratio. (I had a goal to keep is below 100 &lt;span class="caps"&gt;LOC&lt;/span&gt;)&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;RubyURL on GitHub: &lt;a href="http://github.com/robbyrussell/rubyurl"&gt;http://github.com/robbyrussell/rubyurl&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Public Clone &lt;span class="caps"&gt;URL&lt;/span&gt;: &lt;a href="git://github.com/robbyrussell/rubyurl.git"&gt;git://github.com/robbyrussell/rubyurl.git&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Feel free to grab it and help contribute. This has served almost &lt;strong&gt;14 million&lt;/strong&gt; redirects since August 2007 and is running on a &lt;a href="http://planetargon.com/hosting.html"&gt;Rails Boxcar&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;To grab it with git.. run: &lt;code&gt;git clone git://github.com/robbyrussell/rubyurl.git&lt;/code&gt;.&lt;/p&gt;


	&lt;p&gt;Feel free to submit tickets to the &lt;a href="http://planetargon.lighthouseapp.com/projects/4059-rubyurl"&gt;Rubyurl ticket system&lt;/a&gt;.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://planetargon.lighthouseapp.com/projects/4059-rubyurl"&gt;http://planetargon.lighthouseapp.com/projects/4059-rubyurl&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Enjoy!&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;&lt;/strong&gt; Ryan McGeary was kind enough to be the first person to help track down a bug and &lt;a href="http://github.com/robbyrussell/rubyurl/commits/master"&gt;submit patches&lt;/a&gt;. :-)&lt;/p&gt;
</description>
      <pubDate>Sat, 01 Mar 2008 18:31:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a1e839d1-4c9b-47d6-931c-b0559ea71539</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/03/01/launch-your-own-rubyurl</link>
      <category>RubyURL</category>
      <category>Ruby on Rails</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>rubyurl</category>
      <category>boxcar</category>
      <category>git</category>
      <category>subversion</category>
      <category>github</category>
      <category>open</category>
      <category>source</category>
      <category>rails</category>
      <category>rspec</category>
    </item>
    <item>
      <title>Installing Ruby on Rails and PostgreSQL on OS X, Second Edition</title>
      <description>&lt;p&gt;It&amp;#8217;s been just over a year since I posted the article, &lt;a href="http://www.robbyonrails.com/articles/2006/05/29/install-ruby-rails-and-postgresql-on-osx"&gt;Install Ruby, Rails, and PostgreSQL on &lt;span class="caps"&gt;OSX&lt;/span&gt;&lt;/a&gt; and it still gets quite a bit of traffic. Unfortunately, there have been a few changes in the install process that have caught people.&lt;/p&gt;


	&lt;p&gt;Today, I am leaving my PowerBook G4. It&amp;#8217;s being replaced with a MacBook because the logic board is on the fritz. So, guess what that means? I get to install Ruby, Ruby on Rails, PostgreSQL on &lt;span class="caps"&gt;OS X&lt;/span&gt; again! I figured that I would post a revised version of my previous article for those who may go through this same process in the near future.&lt;/p&gt;


&lt;div class="warning"&gt;
&lt;strong&gt;&lt;span class="caps"&gt;&lt;span class="caps"&gt;WARNING&lt;/span&gt;&lt;/span&gt;:&lt;/strong&gt; This post contains some outdated instructions. Please read &lt;a href="http://www.robbyonrails.com/articles/2008/01/22/installing-ruby-on-rails-and-postgresql-on-os-x-third-edition"&gt; Installing Ruby on Rails and PostgreSQL on &lt;span class="caps"&gt;&lt;span class="caps"&gt;OS X&lt;/span&gt;&lt;/span&gt;, Third Edition&lt;/a&gt;, which is focused on Installing Ruby on Rails on Leopard.
&lt;/div&gt;
&lt;h2&gt;Step Zero: Install iTerm (optional)&lt;/h2&gt;


	&lt;p&gt;You&amp;#8217;ll spend a lot of time in your terminal as a Rails developer. I&amp;#8217;m not a big fan of Terminal.app as it lacks tabbed windows&lt;sup&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt; and you&amp;#8217;ll often find me with around ten tabs open. I&amp;#8217;ve been using &lt;a href="http://iterm.sourceforge.net/"&gt;iTerm&lt;/a&gt; for a few years and it&amp;#8217;s definitely improved in the past year and doesn&amp;#8217;t seem to crash nearly as often as it used to.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://iterm.sourceforge.net/download.shtml"&gt;Download the latest iTerm release&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Once installed, I always change the default color scheme as I prefer the white on black schema. The menus in iTerm are lacking some thoughtful interaction design, but I&amp;#8217;ve figured out the right way to do it (after a long time of stumbling on it by accident). In iTerm, you&amp;#8217;ll want to &lt;strong&gt;edit&lt;/strong&gt; the Default bookmark, which you can access by going to Manage Bookmarks under the Bookmarks Menu.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.robbyonrails.com/files/ror_osx_iterm_bookmark.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Set the &lt;strong&gt;Display&lt;/strong&gt; value to &lt;strong&gt;classic iTerm&lt;/strong&gt; and you&amp;#8217;re golden.&lt;/p&gt;


	&lt;p&gt;Now&amp;#8230; let&amp;#8217;s get to business&amp;#8230;&lt;/p&gt;


	&lt;h2&gt;Step 1: Install Xcode Tools&lt;/h2&gt;


	&lt;p&gt;Without installing Xcode tools from Apple, we&amp;#8217;re not going to get very far. First, you&amp;#8217;ll need to grab a copy of Xcode, which you can download on Apple&amp;#8217;s Developer Connection site. It&amp;#8217;s almost a 1GB download, so you&amp;#8217;ll want to start your download and use your multi-tasking skills and &lt;a href="http://drinkviso.com/"&gt;grab a Viso&lt;/a&gt;, read some &lt;a href="http://www.planetrubyonrails.org"&gt;blog&lt;/a&gt; &lt;a href="http://therailsway.com/"&gt;posts&lt;/a&gt;.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://developer.apple.com/tools/download/"&gt;Download Xcode&lt;/a&gt; (dmg)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;I&amp;#8217;m going to make the assumption here that you know how to install a dmg on osx. Once this is installed, you can move on to the next step!&lt;/p&gt;


	&lt;h2&gt;Step 2: All Your MacPorts are Belong to Us&lt;/h2&gt;


	&lt;p&gt;&lt;a href="http://www.macports.org/"&gt;MacPorts&lt;/a&gt; (formerly known as DarwinPorts) is a package management system for &lt;span class="caps"&gt;OS X&lt;/span&gt;. This is what we&amp;#8217;ll use to install most of the necessary programs to develop and run your Ruby on Rails applications. If you&amp;#8217;re from the Linux or &lt;span class="caps"&gt;BSD&lt;/span&gt; world, you are likely familiar with similar tools&amp;#8230; such as: &lt;code&gt;apt-get&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;, and &lt;code&gt;yum&lt;/code&gt;.&lt;/p&gt;


	&lt;p&gt;You&amp;#8217;ll want to download MacPorts and install the dmg file.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.robbyonrails.com/files/ror_osx_macports.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Now that this is installed, we should test it.&lt;/p&gt;


	&lt;p&gt;With a new terminal, run the following:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ port version
Version: 1.442
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Success! Let&amp;#8217;s get going&amp;#8230;&lt;/p&gt;


	&lt;h2&gt;Step 3: Installing the Ruby on Rails development stack&lt;/h2&gt;


	&lt;p&gt;We&amp;#8217;re going to go through a series of small steps, which may take some time depending on how fast your internet connection and computer is.&lt;/p&gt;


	&lt;h3&gt;Install Ruby and RubyGems&lt;/h3&gt;


	&lt;p&gt;In order to install Ruby, we&amp;#8217;re going to use MacPorts with the &lt;code&gt;port&lt;/code&gt; command, which is now available for installing various packages on our &lt;span class="caps"&gt;OS X&lt;/span&gt; machines.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$ sudo port install ruby rb-rubygems&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;It&amp;#8217;ll probably take a while to download and install Ruby and all of it&amp;#8217;s known dependencies. In the meantime, check out &lt;a href="http://lolcode.com/"&gt;some funny code&lt;/a&gt;. &lt;span class="caps"&gt;KTHXBYE&lt;/span&gt;!&lt;/p&gt;


	&lt;p&gt;Still waiting for it to install, perhaps you could do something like&amp;#8230; begin writing a comment on this post, writing your own blog post, &lt;a href="http://www.youtube.com/watch?v=sLD0SNCFtyA"&gt;watch a funny video&lt;/a&gt;, or &lt;a href="http://workingwithrails.com/recommendation/new/person/5408-robby-russell"&gt;recommend me&lt;/a&gt;. I walked to &lt;a href="http://www.backspace.bz/"&gt;Backspace&lt;/a&gt; with Gary to get an Americano&amp;#8230; and it&amp;#8217;s still not done. :-p&lt;/p&gt;


	&lt;p&gt;(minutes/hours/weeks later)&lt;/p&gt;


	&lt;p&gt;Okay&amp;#8230; I trust that it finished installing Ruby and RubyGems without any hiccups. Let&amp;#8217;s test them from our terminal to make sure.&lt;/p&gt;


	&lt;p&gt;Let&amp;#8217;s check the version&amp;#8230;&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-darwin8.9.1]
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, let&amp;#8217;s make sure that Ruby is working properly&amp;#8230;&lt;/p&gt;


&lt;code&gt;&lt;pre&gt;
$ irb
irb(main):001:0&amp;gt; x = 1     
=&amp;gt; 1
irb(main):002:0&amp;gt; puts "wee!!!" if x == 1
wee!!!
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Great, we&amp;#8217;re on a roll. Let&amp;#8217;s get the rest of the stack installed.&lt;/p&gt;


	&lt;h3&gt;Install Ruby on Rails&lt;/h3&gt;


	&lt;p&gt;We&amp;#8217;re going to install Ruby on Rails with the &lt;code&gt;gem&lt;/code&gt; command that installing RubyGems provided.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ sudo gem install -y rails
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This command should produce an output similar to the following.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
Successfully installed rails-1.2.3
Successfully installed rake-0.7.3
Successfully installed activesupport-1.4.2
Successfully installed activerecord-1.15.3
Successfully installed actionpack-1.13.3
Successfully installed actionmailer-1.3.3
Successfully installed actionwebservice-1.2.3
Installing ri documentation for rake-0.7.3...
Installing ri documentation for activesupport-1.4.2...
Installing ri documentation for activerecord-1.15.3...
Installing ri documentation for actionpack-1.13.3...
Installing ri documentation for actionmailer-1.3.3...
Installing ri documentation for actionwebservice-1.2.3...
Installing RDoc documentation for rake-0.7.3...
Installing RDoc documentation for activesupport-1.4.2...
Installing RDoc documentation for activerecord-1.15.3...
Installing RDoc documentation for actionpack-1.13.3...
Installing RDoc documentation for actionmailer-1.3.3...
Installing RDoc documentation for actionwebservice-1.2.3...    
&lt;/code&gt;&lt;/pre&gt;

	&lt;h3&gt;Install Rails-friendly gems&lt;/h3&gt;


	&lt;p&gt;&lt;strong&gt;Mongrel&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re developing with Rails, it&amp;#8217;s highly recommended that you use install and use &lt;a href="http://mongrel.rubyforge.org"&gt;Mongrel&lt;/a&gt; for your development and production environments. The following command will install the mongrel and mongrel_cluster gems (including their dependencies).&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$ sudo gem install -y mongrel mongrel_cluster&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;&lt;small&gt;* Note: Be sure to select the proper platform for mongrel. (hint: &lt;span class="caps"&gt;OS X&lt;/span&gt; is &lt;span class="caps"&gt;NOT&lt;/span&gt; mswin32)&lt;/small&gt;&lt;/p&gt;


	&lt;p&gt;My terminal output:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ sudo gem install -y mongrel mongrel_cluster
Password:
Bulk updating Gem source index for: http://gems.rubyforge.org
Select which gem to install for your platform (i686-darwin8.9.1)
 1. mongrel 1.0.1 (mswin32)
 2. mongrel 1.0.1 (ruby)
 3. mongrel 1.0 (mswin32)
 4. mongrel 1.0 (ruby)
 5. Skip this gem
 6. Cancel installation
&amp;gt; 2
Select which gem to install for your platform (i686-darwin8.9.1)
 1. fastthread 1.0 (ruby)
 2. fastthread 1.0 (mswin32)
 3. fastthread 0.6.4.1 (mswin32)
 4. fastthread 0.6.4.1 (ruby)
 5. Skip this gem
 6. Cancel installation
&amp;gt; 1
Building native extensions.  This could take a while...
Building native extensions.  This could take a while...
Successfully installed mongrel-1.0.1
Successfully installed daemons-1.0.6
Successfully installed fastthread-1.0
Successfully installed gem_plugin-0.2.2
Successfully installed cgi_multipart_eof_fix-2.1
Installing ri documentation for mongrel-1.0.1...
Installing ri documentation for daemons-1.0.6...
Installing ri documentation for gem_plugin-0.2.2...
Installing ri documentation for cgi_multipart_eof_fix-2.1...
Installing RDoc documentation for mongrel-1.0.1...
Installing RDoc documentation for daemons-1.0.6...
Installing RDoc documentation for gem_plugin-0.2.2...
Installing RDoc documentation for cgi_multipart_eof_fix-2.1...
Successfully installed mongrel_cluster-0.2.1    
&lt;/code&gt;&lt;/pre&gt;

	&lt;h2&gt;Step 4: Installing the World&amp;#8217;s Most Advanced Database Server&amp;#8230; PostgreSQL!&lt;/h2&gt;


	&lt;p&gt;At &lt;a href="http://planetargon.com"&gt;&lt;span class="caps"&gt;PLANET ARGON&lt;/span&gt;&lt;/a&gt;, we develop our applications on top of &lt;a href="http://postgresql.or"&gt;PostgreSQL&lt;/a&gt;. I&amp;#8217;ve long been advocating the adoption of this &lt;em&gt;awesome&lt;/em&gt; open source database in the Rails community. Just over a year ago, &lt;a href="http://jvoorhis.com"&gt;Jeremy Voorhis&lt;/a&gt; (PLANET &lt;span class="caps"&gt;ARGON&lt;/span&gt; alumnus) and I were &lt;a href="http://odeo.com/audio/1069086/view"&gt;interviewed on the Ruby on Rails podcast&lt;/a&gt; and had the opportunity to discuss our preference of PostgreSQL over the alternatives (mysql, sqlite, firebird, etc.).&lt;/p&gt;


	&lt;p&gt;We&amp;#8217;re going to install &lt;a href="http://www.postgresql.org/docs/8.2/static/release-8-2.html"&gt;PostgreSQL 8.2&lt;/a&gt; from MacPorts by running the following command.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$ sudo port install postgresql82 postgresql82-server&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;While this is installing, you might take a moment to check out &lt;a href="http://whytheluckystiff.net/comics/differentSpaceShuttles.html"&gt;some space shuttles&lt;/a&gt;.&lt;/p&gt;


	&lt;h3&gt;Setting up PostgreSQL&lt;/h3&gt;


	&lt;p&gt;You may have noticed the output of the previous port installation of PostgreSQL 8.2, suggested that you do the following. Let&amp;#8217;s do that now&amp;#8230;&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ sudo mkdir -p /opt/local/var/db/postgresql82/defaultdb
$ sudo chown postgres:postgres /opt/local/var/db/postgresql82/defaultdb
$ sudo su postgres -c '/opt/local/lib/postgresql82/bin/initdb -D /opt/local/var/db/postgresql82/defaultdb'    
&lt;/code&gt;&lt;/pre&gt;

	&lt;h4&gt;Have PostgreSQL start automatically on system start-ups&lt;/h4&gt;


	&lt;p&gt;Unless you&amp;#8217;re concerned about extra applications running in the background, I&amp;#8217;d encourage you to add PostgreSQL to launchd, which will start it automatically after system reboots.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql82-server.plist&lt;/code&gt;&lt;/pre&gt;

	&lt;h4&gt;Adding PostgreSQL commands to your $PATH&lt;/h4&gt;


	&lt;p&gt;For some reason, MacPorts doesn&amp;#8217;t add the PostgreSQL programs to the default bash &lt;span class="caps"&gt;PATH&lt;/span&gt;, which means that you can&amp;#8217;t run &lt;code&gt;psql&lt;/code&gt;, &lt;code&gt;pg_dump&lt;/code&gt;, or &lt;code&gt;createdb&lt;/code&gt;/&lt;code&gt;dropdb&lt;/code&gt; without specifying the full path to where they were installed. What we&amp;#8217;ll do is add them to our default terminal profile.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;sudo vi /etc/profile&lt;/code&gt;&lt;/pre&gt; (you can use &lt;code&gt;mate&lt;/code&gt;, &lt;code&gt;emacs&lt;/code&gt;, &lt;code&gt;joe&lt;/code&gt; or any other preferred editor to do this)

	&lt;p&gt;This file gets loaded every time a new terminal session is started.&lt;/p&gt;


	&lt;p&gt;Let&amp;#8217;s add &lt;code&gt;/opt/local/lib/postgresql82/bin&lt;/code&gt; to the end of the value for &lt;span class="caps"&gt;PATH&lt;/span&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/opt/local/lib/postgresql82/bin"    
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Save the file and then open a new terminal. To test this, you should get the following output when you run &lt;code&gt;which psql&lt;/code&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ which psql
/opt/local/lib/postgresql82/bin/psql
&lt;/code&gt;&lt;/pre&gt;

	&lt;h4&gt;Creating a new PostgreSQL user&lt;/h4&gt;


	&lt;p&gt;When I&amp;#8217;m working on Rails applications in my development environment, I really don&amp;#8217;t want to have to specify a username and password in every &lt;code&gt;config/database.yml&lt;/code&gt; file for each of our ongoing client projects. When PostgreSQL was installed, it created a superuser named &lt;code&gt;postgres&lt;/code&gt;, which is great, but I&amp;#8217;d like one that matches my system username, so that I&amp;#8217;m not prompted at all for a username or password to connect to PostgreSQL.&lt;/p&gt;


	&lt;p&gt;To do this, we&amp;#8217;ll use the &lt;code&gt;createuser&lt;/code&gt; command, which comes with PostgreSQL. As you can see, I&amp;#8217;m creating a new user with superuser privileges (and will hopefully be the last time I have to do a -U postgres).&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ createuser --superuser robbyrussell -U postgres
CREATE ROLE
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Let&amp;#8217;s take a quick moment to test this out.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
# create a new database
$ createdb my_test_db
CREATE DATABASE

# drop the database
$ dropdb my_test_db
DROP DATABASE
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Great, everything looks good here.&lt;/p&gt;


	&lt;p&gt;We now have a running installation of PostgreSQL with a new user account. All we need to do now is install the appropriate RubyGem to allow our Ruby applications to connect to it.&lt;/p&gt;


	&lt;h3&gt;Installing the Ruby Postgres gem&lt;/h3&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;&lt;/strong&gt;: Hydro posted a commented, which lead me to the ruby-postgres gem.&lt;/p&gt;


	&lt;p&gt;You can install ruby-postgres gem by running the following command.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ sudo gem install -y ruby-postgres
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Let&amp;#8217;s take a moment to test that this installed properly.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ irb
irb(main):001:0&amp;gt; require 'rubygems'
=&amp;gt; true
irb(main):002:0&amp;gt; require 'postgres'
=&amp;gt; true
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;If this returns true, than we should be good to go. We&amp;#8217;ve now built a professional development environment for working with Ruby on Rails. &lt;strong&gt;Doesn&amp;#8217;t that feel great?&lt;/strong&gt;&lt;/p&gt;


	&lt;h2&gt;Test your install&lt;/h2&gt;


	&lt;p&gt;You can look back at &lt;a href="http://www.robbyonrails.com/articles/2006/05/29/install-ruby-rails-and-postgresql-on-osx"&gt;my older post&lt;/a&gt; to walk through the process of testing out your setup with a new Rails application.&lt;/p&gt;


	&lt;h2&gt;Closing thoughts&lt;/h2&gt;


	&lt;p&gt;I hope that this post has been useful for you. It took me a few hours to walk through this process and it&amp;#8217;s how all of our designers and developers at &lt;a href="http://planetargon.com"&gt;&lt;span class="caps"&gt;PLANET ARGON&lt;/span&gt;&lt;/a&gt; installs and configures their development environment.&lt;/p&gt;


	&lt;p&gt;We also install the following programs on new machines.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Subversion: &lt;code&gt;sudo port install subversion&lt;/code&gt;&lt;/li&gt;
		&lt;li&gt;RSpec: &lt;code&gt;sudo gem install -y rspec&lt;/code&gt;&lt;/li&gt;
		&lt;li&gt;...amongst other gems that are needed on specific projects&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Until next time&amp;#8230; have fun!&lt;/p&gt;


	&lt;p id="fn1"&gt;&lt;sup&gt;1&lt;/sup&gt; Rumor: Mac &lt;span class="caps"&gt;OS X&lt;/span&gt; Leopard will give Terminal.app tabs! (&lt;a href="http://www.apple.com/macosx/leopard/technology/unix.html"&gt;see screenshot&lt;/a&gt;)&lt;/p&gt;</description>
      <pubDate>Tue, 19 Jun 2007 13:54:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:99f3a321-f222-4716-b70e-f62fcb7829c1</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/06/19/installing-ruby-on-rails-and-postgresql-on-os-x-second-edition</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>PostgreSQL</category>
      <category>PLANET ARGON</category>
      <category>rails</category>
      <category>ruby</category>
      <category>postgresql</category>
      <category>subversion</category>
      <category>irb</category>
      <category>rubyonrails</category>
      <category>osx</category>
      <category>tutorial</category>
      <category>apple</category>
      <category>rubygems</category>
      <category>xcode</category>
      <category>macports</category>
      <category>macbook</category>
    </item>
    <item>
      <title>RSpec Bundle for TextMate</title>
      <description>&lt;p&gt;Just a quick follow up to my post last night, &lt;a href="http://www.robbyonrails.com/articles/2007/02/11/sharing-custom-textmate-bundles-with-subversion"&gt;Sharing Custom TextMate Bundles with Subversion&lt;/a&gt;. It appears that I missed the &lt;a href="http://rspec.rubyforge.org/tools/extensions/editors/textmate.html"&gt;RSpec bundle&lt;/a&gt; for &lt;a href="http://www.macromates.com"&gt;TextMate&lt;/a&gt;, which is listed on the &lt;a href="http://rspec.rubyforge.org"&gt;RSpec webpage&lt;/a&gt;.&lt;/p&gt;


	&lt;h2&gt;Install the RSpec Bundle&lt;/h2&gt;


	&lt;p&gt;Installation is quite simple, just change directories to your TextMate bundle directory.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
    $ cd ~/Library/Application\ Support/TextMate/Bundles/
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Check out the RSpec bundle from the subversion repository.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
    $ svn co svn://rubyforge.org/var/svn/rspec/trunk/RSpec.tmbundle
    # lots of files...
    A    RSpec.tmbundle/Support/spec/fixtures/example_failing_spec.rb
    A    RSpec.tmbundle/Support/spec/fixtures/example_passing_spec.rb
    A    RSpec.tmbundle/Support/spec/spec_mate_spec.rb
    Checked out revision 1489.
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, just reload your bundles in TextMate and you&amp;#8217;re good to go!&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Bundles &amp;gt; Bundle Editor &amp;gt; Reload Bundles&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;d like to thank &lt;a href="http://blog.aslakhellesoy.com/"&gt;Aslak Hellesøy&lt;/a&gt; for pointing me to this and for also providing me with the correct subversion &lt;span class="caps"&gt;URL&lt;/span&gt;, which is currently outdated on the RSpec page until the next release.&lt;/p&gt;
</description>
      <pubDate>Mon, 12 Feb 2007 07:58:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:f183d1d4-0531-48e7-b389-1e5684d86590</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/02/12/rspec-bundle-for-textmate</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>rspec</category>
      <category>bdd</category>
      <category>textmate</category>
      <category>bundle</category>
      <category>subversion</category>
    </item>
    <item>
      <title>Sharing Custom TextMate Bundles with Subversion</title>
      <description>&lt;p&gt;Early last year, I began to start creating a bunch of snippets and such for &lt;a href="http://macromates.com"&gt;TextMate&lt;/a&gt;, all of which were lost several months ago due to &lt;a href="http://www.robbyonrails.com/articles/2006/08/11/isight-magnet-is-teh-suck"&gt;Hurricane iSight&lt;/a&gt;. I recently decided to start building some again, especially some that sped up my &lt;a href="http://rspec.rubyforge.org"&gt;RSpec&lt;/a&gt; writing. After creating a few, I wondered, &amp;#8220;would anybody else on my team want to help me write some?&amp;#8221; So, I thought that it was time to figure out how to share my bundle with others and allow them to add stuff to it&amp;#8230; which seems like a good job for Ms. Subversion.&lt;/p&gt;


	&lt;p&gt;I couldn&amp;#8217;t find a quick walk-through online and found myself in the &lt;code&gt;#textmate&lt;/code&gt; IRC channel getting proper instructions. (thank you &lt;a href="http://macromates.com/blog/"&gt;Allan&lt;/a&gt;!)&lt;/p&gt;


	&lt;h2&gt;Create Your Bundle&lt;/h2&gt;


	&lt;p&gt;In TextMate, you can open up the Bundle Editor and create a new bundle. Let&amp;#8217;s call our custom bundle, &lt;strong&gt;RSpec&lt;/strong&gt;. Go ahead and begin adding some snippets, commands, etc to your new custom bundle. Once you have something in your Bundle, you&amp;#8217;ll want to reload your bundles, by going to &lt;strong&gt;Bundles &amp;gt; Bundle Editor &amp;gt; Reload Bundles&lt;/strong&gt;. This will write your new bundle to disk to &lt;code&gt;~/Library/Application\ Support/TextMate/Bundles/&lt;/code&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
    $ ls -al ~/Library/Application\ Support/TextMate/Bundles/
    total 0
    drwxr-xr-x   5 robbyrus  robbyrus  170 Feb 11 21:10 .
    drwxr-xr-x   4 robbyrus  robbyrus  136 Feb 11 20:11 ..
    drwxr-xr-x   5 robbyrus  robbyrus  170 Jan 12 16:58 PLANET ARGON.tmbundle
    drwxr-xr-x   3 robbyrus  robbyrus  102 Feb 11 21:10 RSpec.tmbundle
    drwxr-xr-x   4 robbyrus  robbyrus  136 Oct 21 13:38 Robby Russell???s Bundle.tmbundle
&lt;/code&gt;&lt;/pre&gt;

	&lt;h2&gt;Importing your Bundle into Subversion&lt;/h2&gt;


	&lt;p&gt;You&amp;#8217;ll want to first import your new bundle into Subversion.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
    $ cd ~/Library/Application\ Support/TextMate/Bundles/
    $ svn import RSpec.tmbundle/ -m "Initial import of RSpec (test) bundle" http://{respository_url}/{repository_name}/RSpec.tmbundle/
    Adding         RSpec.tmbundle/info.plist
    Adding         RSpec.tmbundle/Snippets
    Adding         RSpec.tmbundle/Snippets/new specification.tmSnippet
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Great, now it&amp;#8217;s in Subversion. Now, you&amp;#8217;ll want to check it back out so that TextMate is running off of the version from Subversion.&lt;/p&gt;


	&lt;p&gt;The simplest way to do this is to delete your local copy and checkout the latest from Subversion.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
    $ rm -rf RSpec.tmbundle/; svn co http://{respository_url}/{repository_name}/RSpec.tmbundle/
    A    RSpec.tmbundle/Snippets
    A    RSpec.tmbundle/Snippets/new specification.tmSnippet
    A    RSpec.tmbundle/info.plist
    Checked out revision 5.
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;All that you need to do now, is relaod your bundles again. Now that you know where the bundle files are stored, you can commit any changes as they are made.&lt;/p&gt;


	&lt;h2&gt;Committing Bundle Changes&lt;/h2&gt;


	&lt;p&gt;When you make changes to your TextMate bundle, you can do the following to commit your updates to the Subversion repository.&lt;/p&gt;


	&lt;h3&gt;See Your Pending Changes&lt;/h3&gt;


	&lt;p&gt;You can change directories to your custom bundle and run &lt;code&gt;svn status&lt;/code&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
    $ cd ~/Library/Application\ Support/TextMate/Bundles/RSpec.tmbundle/
    $ svn status
    ?      Snippets/new context.tmSnippet
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;You&amp;#8217;ll see that the new snippet that I created needs to be added to Subversion.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
    $ svn add Snippets/new\ context.tmSnippet 
    A         Snippets/new context.tmSnippet
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, let&amp;#8217;s commit it to the repository.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ svn ci -m "Adding new context snippet" 
Adding         Snippets/new context.tmSnippet
Transmitting file data .
Committed revision 6.
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;At this point, all Subversion tips and tricks apply&amp;#8230; so&amp;#8230; it&amp;#8217;s time to leave it to you to figure out the rest. :-)&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;TIP&lt;/span&gt;: Always reload your bundles before and after running svn update or svn commit&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;...and there you have it! You and your friends can (with a little work) share and develop your own custom bundles for TextMate. I&amp;#8217;m hoping to get my teammates at &lt;a href="http://www.planetargon.com/"&gt;&lt;span class="caps"&gt;PLANET ARGON&lt;/span&gt;&lt;/a&gt; to help me build a bunch for RSpec, which I&amp;#8217;ll try to release into the wild soon. If anybody is already working on RSpec snippets and other TextMate hacks, please let me know.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/02/11/sharing-custom-textmate-bundles-with-subversion#comments"&gt;Aslak kindly commented&lt;/a&gt; on this post and has pointed me to bundle available in the RSpec subversion repository, which I &lt;a href="http://www.robbyonrails.com/articles/2007/02/12/rspec-bundle-for-textmate"&gt;blogged about.&lt;/a&gt;) :-)&lt;/p&gt;


	&lt;p&gt;Happy hacking!&lt;/p&gt;
</description>
      <pubDate>Sun, 11 Feb 2007 23:35:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:f8505a28-84eb-43ea-8504-2d60385d1460</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/02/11/sharing-custom-textmate-bundles-with-subversion</link>
      <category>Ruby on Rails</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>rspec</category>
      <category>textmate</category>
      <category>subversion</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Every Second Counts with a Piston in your Trunk</title>
      <description>&lt;p&gt;Recently, I wrote about using RSpec and autotest (...which I think &lt;em&gt;should&lt;/em&gt; be called autospec) together to help boost productivity while working on Rails projects. It seems that a few members of the &lt;a href="http://www.planetargon.com/"&gt;&lt;span class="caps"&gt;PLANET ARGON&lt;/span&gt;&lt;/a&gt; team have picked up on using it, which I&amp;#8217;m happy to hear about. :-)&lt;/p&gt;


	&lt;p&gt;It&amp;#8217;s not the only thing that I&amp;#8217;m happy about though.&lt;/p&gt;


	&lt;p&gt;I recently came across another &lt;em&gt;gem&lt;/em&gt;. Several of my comrades in &lt;a href="http://caboo.se"&gt;#caboose&lt;/a&gt; are using &lt;a href="http://piston.rubyforge.org/usage.html"&gt;piston&lt;/a&gt; to manage external plugins for &lt;a href="http://www.rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt;. Wait! Isn&amp;#8217;t this what &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; externals is meant for? Well, yes&amp;#8230; but externals also eat away at productivity. For example, each day, we may have anywhere from 4-6 designers and developers working on one client project. When we&amp;#8217;re in crunch mode, this could account for quite a few subversion commits throughout the day. We all know that we should run &lt;code&gt;svn up&lt;/code&gt; on a regular basis to make sure that we&amp;#8217;re keeping things in sync&amp;#8230; especially when designers and developers are working really closely and fine tuning something specific in the application. Well, the one downside to this process is that each &lt;code&gt;svn up&lt;/code&gt; not only checks our repository, but it also checks external repositories.&lt;/p&gt;


	&lt;p&gt;&lt;em&gt;&amp;#8220;But wait! Can&amp;#8217;t you just ignore externals on an update?&amp;#8221;&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;Of course, but who wants to type out &lt;code&gt;--ignore-externals&lt;/code&gt; each time they run an update? ...or perhaps you could make an alias for this in your shell. In any event, everyone on the team is then left to be responsible for doing this&amp;#8230; and an extra 30-60 seconds (if not longer) per svn update times x number of people on project&amp;#8230; well&amp;#8230; time wasted if you&amp;#8217;re closely watching the svn updates. Also, TextMate doesn&amp;#8217;t have an option currently (that I could find) to ignore externals, so for those who manage subversion through it&amp;#8230; they&amp;#8217;re waiting on externals within their primary workspace.&lt;/p&gt;


	&lt;p&gt;Another issue with svn externals is that when a repository goes down, it &lt;em&gt;really&lt;/em&gt; starts to slow stuff down your updates. This is always fun when you go to deploy your application with Capistrano and realize that you can&amp;#8217;t finish the update because it can&amp;#8217;t connect it to &lt;code&gt;http://svn.lazyatom.com/public/plugins/acts_as_hasselhoff/&lt;/code&gt; to make sure that your application has the latest version of the &lt;a href="http://interblah.net/2006/10/4/ajaxworld-presentation"&gt;best plugins available for Rails&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/261816231/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/106/261816231_8c3d696a27_m.jpg" width="240" height="160" alt="acts_as_hasselhoff" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Then there is the whole issue of wanting to make changes to the plugin that you&amp;#8217;re including as an external. How does that fit into the whole mix?&lt;/p&gt;


	&lt;h2&gt;There is Hope!&lt;/h2&gt;


	&lt;p&gt;Piston encourages you to keep your external plugins in your local repository. Don&amp;#8217;t worry, it remembers where it retrieved the code from so that you can update from the external repository at any time.&lt;/p&gt;


	&lt;h3&gt;Installing Piston&lt;/h3&gt;


	&lt;p&gt;Again, this is really simple like most gems.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
    $ sudo gem install -y piston
    Password:
    ...
    Successfully installed piston-1.2.1
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Great, that&amp;#8217;s all that you have to do to get started with Piston. Now, let&amp;#8217;s get on with the show.&lt;/p&gt;


	&lt;p&gt;If you don&amp;#8217;t have any existing Subversion externals, feel free to skip this section.&lt;/p&gt;


	&lt;h3&gt;Converting existing externals&lt;/h3&gt;


	&lt;p&gt;Okay, so let&amp;#8217;s say that you&amp;#8217;re working on a Ruby on Rails project and are relying on several external repsitories. For example, a project that I&amp;#8217;m working on&amp;#8230; currently looks like this.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
    $ svn proplist --verbose vendor/plugins/               
    Properties on 'vendor/plugins': 
      svn:externals : 
    authorization                 http://svn.writertopia.com/svn/plugins/authorization
    svn_tools                     http://svn.planetargon.org/rails/plugins/svn_tools
    simply_helpful                http://dev.rubyonrails.com/svn/rails/plugins/simply_helpful
    exception_notification        http://dev.rubyonrails.com/svn/rails/plugins/exception_notification
    asset_field                   http://svn.planetargon.org/rails/plugins/asset_field
    rspec_on_rails                svn://rubyforge.org/var/svn/rspec/tags/REL_0_7_5/rspec_on_rails/vendor/plugins/rspec_on_rails
    rspec_autotest                http://svn.caldersphere.net/svn/main/plugins/rspec_autotest
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Piston is smart enough to know how to convert these Subversion externals into Piston-friendly plugins. This can be done by passing the &lt;code&gt;piston&lt;/code&gt; command the convert &lt;code&gt;option&lt;/code&gt; from within your Rails application directory.&lt;/p&gt;


	&lt;p&gt;Go ahead and run the following.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
    $ piston convert
    Importing 'http://dev.rubyonrails.org/svn/rails/tags/rel_1-2-0_RC1' to vendor/rails (-r 5619)
    Exported r5619 from 'http://dev.rubyonrails.org/svn/rails/tags/rel_1-2-0_RC1' to 'vendor/rails'

    Importing 'http://svn.writertopia.com/svn/plugins/authorization' to vendor/plugins/authorization (-r 83)
    Exported r83 from 'http://svn.writertopia.com/svn/plugins/authorization' to 'vendor/plugins/authorization'

    Importing 'http://svn.planetargon.org/rails/plugins/svn_tools' to vendor/plugins/svn_tools (-r 119)
    Exported r119 from 'http://svn.planetargon.org/rails/plugins/svn_tools' to 'vendor/plugins/svn_tools'

    Importing 'http://dev.rubyonrails.com/svn/rails/plugins/simply_helpful' to vendor/plugins/simply_helpful (-r 5700)
    Exported r5700 from 'http://dev.rubyonrails.com/svn/rails/plugins/simply_helpful' to 'vendor/plugins/simply_helpful'

    Importing 'http://dev.rubyonrails.com/svn/rails/plugins/exception_notification' to vendor/plugins/exception_notification (-r 3900)
    Exported r3900 from 'http://dev.rubyonrails.com/svn/rails/plugins/exception_notification' to 'vendor/plugins/exception_notification'

    Importing 'http://svn.planetargon.org/rails/plugins/asset_field' to vendor/plugins/asset_field (-r 50)
    Exported r50 from 'http://svn.planetargon.org/rails/plugins/asset_field' to 'vendor/plugins/asset_field'

    Importing 'svn://rubyforge.org/var/svn/rspec/tags/REL_0_7_5/rspec_on_rails/vendor/plugins/rspec_on_rails' to vendor/plugins/rspec_on_rails (-r 1330)
    Exported r1330 from 'svn://rubyforge.org/var/svn/rspec/tags/REL_0_7_5/rspec_on_rails/vendor/plugins/rspec_on_rails' to 'vendor/plugins/rspec_on_rails'

    Importing 'http://svn.caldersphere.net/svn/main/plugins/rspec_autotest' to vendor/plugins/rspec_autotest (-r 48)
    Exported r48 from 'http://svn.caldersphere.net/svn/main/plugins/rspec_autotest' to 'vendor/plugins/rspec_autotest'

    Done converting existing svn:externals to Piston    
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;All we have to do now is checkin our changes to subversion and we&amp;#8217;re golden.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;svn ci -m "updating repository to use piston instead of those lame-o externals..."&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;If you find this interesting and want to learn more, be sure to check out &lt;a href="http://www.rubyinside.com/advent2006/12-piston.html"&gt;this post on Ruby Inside&lt;/a&gt; for a detailed introduction to Piston.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;update&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;the following morning I saw this come across our development team channel&amp;#8230;&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;&amp;lt; argonbot&amp;gt; svn.commit( project_name, { :author =&amp;gt; 'brian.ford', :rev =&amp;gt; 83, :log =&amp;gt; 'converted svn:externals to piston for product, cus I can.' } &lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;:-)&lt;/p&gt;
</description>
      <pubDate>Tue, 16 Jan 2007 01:15:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:3c74592f-3254-474f-b471-87e20ce01f3d</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/01/16/every-second-counts-with-a-piston-in-your-trunk</link>
      <category>Ruby on Rails</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>subversion</category>
      <category>producitivity</category>
    </item>
    <item>
      <title>The Zen of Auto Rspec</title>
      <description>&lt;p&gt;Several months ago, I heard that people were using a program called &lt;a href="http://nubyonrails.com/articles/2006/04/19/autotest-rails"&gt;autotest&lt;/a&gt; to have their tests continue to run as you made changes to your code base, which comes with &lt;a href="http://zentest.rubyforge.org/ZenTest/"&gt;ZenTest&lt;/a&gt;. It&amp;#8217;s a really nice tool written by Ryan Davis and I hadn&amp;#8217;t gotten a chance to play with it as of yet. Well, our team isn&amp;#8217;t spending too much time in the &lt;code&gt;test/&lt;/code&gt; directory these days as we jumped ship near the end of last summer and found ourselves hanging out on the &lt;a href="http://blog.brightredglow.com/2006/10/4/what-s-it-worth-to-me"&gt;Isle of &lt;span class="caps"&gt;BDD&lt;/span&gt;&lt;/a&gt;. The locals are &lt;a href="http://blog.daveastels.com/articles/2005/07/05/a-new-look-at-test-driven-development"&gt;quite thoughtful&lt;/a&gt; about these sorts of things.&lt;/p&gt;


	&lt;p&gt;I just started working on a project that has been under development for several months and as I&amp;#8217;m getting to learn the ins/outs of the system, I find myself having to rerun the specs, which can take quite a bit of time watching. Watching your specs or tests run sometimes is as productive as watching your code compile. Oddly enough, this is as close to compilation as we really get when working with Ruby on Rails&amp;#8230; and it&amp;#8217;s a productivity killer for me.&lt;/p&gt;


	&lt;h2&gt;There Must Be a Better Way!&lt;/h2&gt;


	&lt;p&gt;So, I did a quick google search and found &lt;a href="http://blog.nicksieger.com/articles/2006/11/15/rspec-autotest-now-a-rails-plugin"&gt;an announcement&lt;/a&gt; for Rails that ran specs through ZenTest. This was exactly what I was searching for!&lt;/p&gt;


	&lt;h3&gt;Some requirements&lt;/h3&gt;


	&lt;p&gt;Please makes sure that you have the following gems installed in your development environment as they are dependencies to make this all work.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;zentest &lt;/li&gt;
		&lt;li&gt;diff-lcs&lt;/li&gt;
	&lt;/ul&gt;


&lt;pre&gt;&lt;code&gt;
$ sudo gem install zentest diff-lcs 
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;&lt;strong&gt;note&lt;/strong&gt; I&amp;#8217;m going to assume that you have rspec and rspec for rails installed&amp;#8230; if not&amp;#8230; tsk. ;-)&lt;/p&gt;


	&lt;h3&gt;Install RSpec autotest&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;
$ script/plugin install http://svn.caldersphere.net/svn/main/plugins/rspec_autotest
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;If you&amp;#8217;re using subversion, you might consider installing it as an external.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ script/plugin install -x http://svn.caldersphere.net/svn/main/plugins/rspec_autotest
&lt;/code&gt;&lt;/pre&gt;

	&lt;h3&gt;Running  RSpec autotest&lt;/h3&gt;


	&lt;p&gt;This is where it gets tricky. ;-)&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ rake spec:autotest
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, you can keep a terminal window open and autotest will watch your application and detect when files change. When they change, it&amp;#8217;ll attempt to rerun your specs (specifically those that changed). This helps save you the time of having to rerun all your specs throughout the development process and keep your spec:all sanity checks for when you&amp;#8217;re about to commit code to your repository.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ll post another entry in the next few days to show you how you can use &lt;a href="http://growl.info/"&gt;Growl&lt;/a&gt; with RSpec Autotest to keep you from having to look at your terminal all the time.&lt;/p&gt;


	&lt;p&gt;Until then&amp;#8230; have fun!&lt;/p&gt;
</description>
      <pubDate>Wed, 10 Jan 2007 11:08:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:dfc3e9d1-5548-4a55-a66b-9e36b6a07580</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/01/10/the-zen-of-auto-rspec</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>bdd</category>
      <category>rspec</category>
      <category>autotest</category>
      <category>rake</category>
      <category>subversion</category>
      <category>productivity</category>
      <category>development</category>
    </item>
    <item>
      <title>the bizarre love triangle of rbot, subversion, and drb</title>
      <description>&lt;p&gt;In our pursuit to get stuff ready for the &lt;a href="http://www.pdxruby.org/"&gt;&lt;span class="caps"&gt;PDX&lt;/span&gt;.rb&lt;/a&gt; hackfest this weekend, &lt;a href="http://www.bleything.net/blog/"&gt;Ben Bleything&lt;/a&gt; and I decided that it would be a cool idea to get &lt;a href="http://linuxbrit.co.uk/rbot/"&gt;rbot&lt;/a&gt; to monitor the groups subversion repositories.&lt;/p&gt;


	&lt;p&gt;We asked around a few &lt;span class="caps"&gt;IRC&lt;/span&gt; channels and people had different ways of handling this. The easy route looked to be to parse a &lt;span class="caps"&gt;RSS&lt;/span&gt; feed from Trac. (boring!)&lt;/p&gt;


	&lt;p&gt;So, in an effort to make it interesting and allow for a little creativity with rbot-&lt;del&gt;and potentially open the doors to other ideas&lt;/del&gt;-we opted to build 2 pieces. One would be a &lt;code&gt;post-commit&lt;/code&gt; script that would run after a &lt;code&gt;svn commit&lt;/code&gt; and the other would be a new plugin in rbot, which started an instance of &lt;a href="http://raa.ruby-lang.org/project/druby"&gt;DRb&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;The basic idea&amp;#8230;&lt;/p&gt;


	&lt;p&gt;rbot starts drb on start&lt;/p&gt;


	&lt;p&gt;svn commit  calls drb client, sends notifcation&lt;/p&gt;


	&lt;p&gt;Yes! I managed to sneak DRb somewhere else that it probably didn&amp;#8217;t &lt;strong&gt;need&lt;/strong&gt; to be. It was actually a good way to figure out how to properly tame the crazy lion that is DRb. It&amp;#8217;s so sexy, but I am so afraid that it will scratch me if I get too close. It scratched a little tonight, but then the kind folks in #ruby-lang gave me a band-aid and I was on my way. Guess what? I tamed the lion!&lt;/p&gt;


	&lt;p&gt;The sad part is that I got the thing to properly work about 25 seconds after Ben logged off of &lt;span class="caps"&gt;IRC&lt;/span&gt; and here I am a few horus later amusing myself with test svn commits and telling the whole world. That&amp;#8217;s right&amp;#8230; he&amp;#8217;s sleeping&amp;#8230; and dreaming about how the lion is still out to attack him and you all know that the lion is nicely tucked away.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="constant"&gt;Thread&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; 
  &lt;span class="comment"&gt;# the lion is here &lt;/span&gt;
&lt;span class="punct"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;We couldn&amp;#8217;t have the lion holding the rbot in a headlock the whole time.&lt;/p&gt;


	&lt;p&gt;So, the lion is nice and it is our new friend. We now have instant notifications of when our repositories get commits in &lt;strong&gt;#pdx.rb&lt;/strong&gt;.&lt;/p&gt;


	&lt;p&gt;Once we get it to format everything nice and pretty (color-wise), we&amp;#8217;ll make it available for all of you rbot and subversion folks.&lt;/p&gt;
</description>
      <pubDate>Thu, 15 Sep 2005 01:27:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:79306f0a597c85ff785b06fbe687bf80</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2005/09/15/the-bizarre-love-triangle-of-rbot-subversion-and-drb</link>
      <category>Ruby</category>
      <category>Programming</category>
      <category>rbot</category>
      <category>subversion</category>
      <category>ruby</category>
    </item>
  </channel>
</rss>
