<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Robby on Rails</title>
    <link>http://www.robbyonrails.com</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>thoughts.sort_by{|t| t[:topic]}.collect </description>
    <geo:lat>45.52889</geo:lat><geo:long>-122.684581</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/RobbyOnRails" type="application/rss+xml" /><feedburner:browserFriendly>(Enter a personal message you would like to have appear at the top of your feed.)</feedburner:browserFriendly><item>
      <title>Managing your Life the Agile Way in 2009</title>
      <description>&lt;p&gt;We&amp;#8217;re just a few days away from 2009 and it&amp;#8217;s that time when we all start looking back at the last year and set goals for the coming new year. I felt like sharing some of my thoughts on how I&amp;#8217;m aiming to approach the new year.&lt;/p&gt;


	&lt;p&gt;Historically, I&amp;#8217;ve never been a huge fan of &lt;a href="http://en.wikipedia.org/wiki/New_Year%27s_resolution"&gt;New Years Resolutions&lt;/a&gt; because my attempts were always too big to successfully measure. The goals themselves weren&amp;#8217;t poorly thought-out, it&amp;#8217;s just that it&amp;#8217;s really easy to make a list of personal targets, without putting a lot of emphasis on how you&amp;#8217;re going to achieve them. The biggest trouble that I&amp;#8217;ve had with goals is allocating enough mental energy for implementation planning. (if only I had someone to and wireframe my life&amp;#8230;)&lt;/p&gt;


	&lt;p&gt;Due to this, New Years Resolutions haven&amp;#8217;t been a huge success for me. I’ve found it much too easy to pass the buck onto the usual suspects, which consist of: lack of time, energy, too much work, general life changes, health, etc.&lt;/p&gt;


	&lt;p&gt;So, for 2009&amp;#8230; I&amp;#8217;m going to try something different by focusing on a set of best practices that I can use on a daily-basis. I suppose that my main goal is to not place too much emphasis on any specific targets and instead place the responsibility on myself to follow these best-practices and see what good (or bad) comes of it.&lt;/p&gt;


	&lt;p&gt;By rephrasing my internal conversation from, “What did I achieve this last year?” to “Am I doing things the best that I can?” I am confident that the answer will usually be, &amp;#8220;not likely.&amp;#8221; I do believe that through this subtle change in context, I&amp;#8217;ll be better apt to self-evaluate how (and why) I am doing the things that I do and refactor accordingly. If we&amp;#8217;re not consistently Refactoring ourselves (as we do with our code), we&amp;#8217;re going to retain a lot inefficiencies in our personal and work lives, which make it difficult for us to quickly respond to changes and opportunities.&lt;/p&gt;


	&lt;p&gt;Our life (personal and work) is just another project that we manage. Much of methodologies that we spend learning about and adopting can easily be translated to these other areas of our lives.&lt;/p&gt;


	&lt;p&gt;So as I brace myself for 2009, I find myself asking, &lt;em&gt;&lt;strong&gt;How can I lead a more Agile life?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;d love to hear how you&amp;#8217;re adopting best-practices inspired by Agile methodologies in your life and I promise to share mine over the coming year.&lt;/p&gt;


	&lt;h3&gt;Related Posts&lt;/h3&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2006/04/21/agile-development-begins-within"&gt;Agile development begins within&amp;#8230;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2006/04/26/agile-development-begins-within-continued"&gt;Agile development begins within&amp;#8230; continued&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/01/04/those-that-tend-the-store-need-dialogue"&gt;Those that Tend the Store need Dialogue&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=XUX1UI.O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=XUX1UI.O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=2Aw2BO.o"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=2Aw2BO.o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=k94dsv.O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=k94dsv.O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=DpnOlt.O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=DpnOlt.O" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/497237429" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 28 Dec 2008 15:20:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:8e4a9466-0be3-46dd-b2da-fa96b795fef6</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/497237429/managing-your-life-the-agile-way-in-2009</link>
      <category>Off-Topic</category>
      <category>agile</category>
      <category>personal</category>
      <category>life</category>
      <category>lifehacks</category>
      <category>people</category>
      <category>newyears</category>
      <category>resolutions</category>
      <category>goals</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/12/28/managing-your-life-the-agile-way-in-2009</feedburner:origLink></item>
    <item>
      <title>Rails 3 and Merb</title>
      <description>&lt;p&gt;So&amp;#8230; Rails and Merb are going to be merged into Rails 3. (&lt;a href="http://feeds.feedburner.com/~r/RidingRails/~3/493415973/merb-gets-merged-into-rails-3"&gt;link&lt;/a&gt;)&lt;/p&gt;


	&lt;p&gt;Has hell frozen over?&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3152/3131322410_eae8821c6f.jpg?v=0" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;small&gt;(it has in Portland the last week)&lt;/small&gt;&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m curious about how the revised core team will incorporate the library-agnostic view points into Rails without increasing the complexity for configuration. For example, being able to use a different &lt;span class="caps"&gt;ORM&lt;/span&gt; is great, but at the same time, one of the things that I have really liked about Ruby on Rails was that it did make decisions ahead of time for you. Conventions over Configuration and all that jazz. While they intend to keep these &lt;em&gt;defaults&lt;/em&gt;, I really wonder how much more configuration will be involved. Be that as it may, Rails and Merb are run by some of the best developers I&amp;#8217;ve ever known&amp;#8230; so I am sure these decisions will not be made without some deep consideration.&lt;/p&gt;


	&lt;p&gt;Rails application don&amp;#8217;t all look and smell the same, but it&amp;#8217;s nice to know that there is consistency across all of our client applications. What I&amp;#8217;m concerned about (from an efficiency standpoint) is that this could lead to project-diversity at the cost of experimenting. Pre-Rails, the development teams that I was a part of was constantly trying out new libraries from client project to project, but this came at a huge cost. We weren&amp;#8217;t able to leverage our experience with previous projects like our team does with Ruby on Rails currently. (hell, I even helped write two different ORMs in the two years before Rails for &lt;span class="caps"&gt;PHP&lt;/span&gt;&amp;#8230; and still wasn&amp;#8217;t satisfied)&lt;/p&gt;


	&lt;p&gt;But, this isn&amp;#8217;t so much a technical problem as much as a people problem. The thing is&amp;#8230; is that Rails helped solve a people problem with a technical answer. Having testing, consistency, and other best practices built-in did the world a huge favor. ...and all it took was someone like &lt;span class="caps"&gt;DHH&lt;/span&gt; to throw his opinion out there and stick to it. It took me nearly a full year to really embrace a lot of these conventions, but in the end.. it paid off.&lt;/p&gt;


	&lt;p&gt;While I do feel that it&amp;#8217;s in developers best interests to try out new approaches, I just don&amp;#8217;t think it should be on your clients dime. This was part of the reason why I quit my last job to start Planet Argon full-time. I really wanted to get away from that cycle.&lt;/p&gt;


	&lt;p&gt;Since we (Planet Argon) adopted Ruby on Rails four years ago, we&amp;#8217;ve been able to build off of every project we had worked on before. We since adopted things like RSpec and JQuery, but our team decided on these changes after someone took the initiative to experiment with these on internal and personal projects. Having this foundation has freed up a lot of our time to focus on other issues as a team, like Interaction Design, Usability, and client collaboration.&lt;/p&gt;


	&lt;p&gt;As far as Merb itself, I honestly haven&amp;#8217;t tried to do anything with it since about 0.2/0.3. I gave up quickly though because the documentation didn&amp;#8217;t help me get anywhere and my time is valuable. I&amp;#8217;ve since seen that documentation has improved drastically, but I haven&amp;#8217;t been able to prioritize the time needed to really play with it. With Merb being merged into Rails 3, it means that I really should spend more time exploring it as we might be able to leverage some of it&amp;#8217;s benefits without as much of an investment.&lt;/p&gt;


	&lt;p&gt;Much of the lack of great interest in Merb was because I felt Rails had consistently provided our team with a solid foundation for a majority of our internal and client applications. The old saying, &amp;#8220;if it ain&amp;#8217;t broke, don&amp;#8217;t fix it.&amp;#8221; Not to say that others haven&amp;#8217;t expressed a lot of excitement about Merb and it&amp;#8217;s benefits, I just didn&amp;#8217;t see there being enough of a productivity gain to warrant the time investment required to really learn and use a new framework&amp;#8230; and the one thing that I have had trouble with was that it didn&amp;#8217;t sound like Merb encouraged a default set of libraries. I could be totally wrong, but that&amp;#8217;s been the perception I&amp;#8217;ve had based on how it was branded.&lt;/p&gt;


	&lt;p&gt;But&amp;#8230; the best part about this for you, me, and the Rails community? Is that I don&amp;#8217;t need to register &lt;strong&gt;robbyonmerb.com&lt;/strong&gt; anytime soon. ;-)&lt;/p&gt;


	&lt;p&gt;I hope that you&amp;#8217;re all having a great end to 2008 and am excited to see all the energy in the Ruby/Rails/Merb community. I suspect that between these two (now-merged) teams, we&amp;#8217;ll have an even better platform to develop web applications on. I believe this is great news and I&amp;#8217;m all in favor of seeing the Ruby community conquer these challenges that lay ahead.&lt;/p&gt;


	&lt;p&gt;Anyhow, I&amp;#8217;m just thinking out loud. What are your thoughts?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=ObnsO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=ObnsO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=PsEZo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=PsEZo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=5fsGO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=5fsGO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=d6KGO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=d6KGO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/493567900" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 23 Dec 2008 16:55:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:78fde34a-ecbf-49b4-bf15-6583ad315b30</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/493567900/rails-3-and-merb</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>rails</category>
      <category>rubyonrails</category>
      <category>merb</category>
      <category>thoughts</category>
      <category>hell</category>
      <category>portland</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/12/23/rails-3-and-merb</feedburner:origLink></item>
    <item>
      <title>RailsBoxcar.com 2.0</title>
      <description>&lt;p&gt;In case you missed the tweet from &lt;a href="http://twitter.com/demonbane"&gt;Alex&lt;/a&gt; ...&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/6561/twitterrific"&gt;&lt;img src="http://img.skitch.com/20081218-jnd6arttbqttqwid2j1ts95gap.preview.jpg" alt="Twitterrific" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;Our team just designed, developed, and deployed a new site for, &lt;a href="http://railsboxcar.com"&gt;Boxcar&lt;/a&gt;, our streamlined deployment environment for Ruby on Rails applications.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://railsboxcar.com/"&gt;&lt;img src="http://img.skitch.com/20081218-86i6999q9t1r5i5wegfj14m6fx.preview.jpg" alt="Boxcar" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;Feel free to &lt;a href="http://railsboxcar.com/tour"&gt;take a tour&lt;/a&gt; to learn more about our product plans, which currently start as low as $59/month.&lt;/p&gt;


	&lt;p&gt;If you have a project that you&amp;#8217;ll be launching in the coming months, &lt;a href="http://railsboxcar.com/contact"&gt;get in touch with us&lt;/a&gt;. :-)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=0u7cO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=0u7cO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=mny0o"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=mny0o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=oVBUO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=oVBUO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=bdp4O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=bdp4O" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/488364807" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 17 Dec 2008 23:55:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:9689b7c0-db5a-4358-babb-102474439be0</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/488364807/railsboxcar-com-2-0</link>
      <category>Business</category>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>hosting</category>
      <category>rubyonrails</category>
      <category>rails</category>
      <category>vps</category>
      <category>boxcar</category>
      <category>design</category>
      <category>deployment</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/12/17/railsboxcar-com-2-0</feedburner:origLink></item>
    <item>
      <title>Launching Ruby on Rails projects, a checklist</title>
      <description>&lt;p&gt;As mentioned in a &lt;a href="http://www.robbyonrails.com/articles/2008/12/12/alphaclone-on-postgresql-and-ruby-on-rails"&gt;recent post&lt;/a&gt;, I&amp;#8217;m hoping to share some lessons that were learned throughout the process of launching a client project. Over the past few years, we&amp;#8217;ve been part of several dozen client projects and the big launch date is always an anxiety-filled, yet exciting point for the client and our team. I wanted to provide a quick list of a few the things that our team considers vital before launching that next big project. While most of these things might seem obvious, it&amp;#8217;s still good to cover the basics and I hope a few people find it helpful.&lt;/p&gt;


	&lt;h2&gt;Hosting&lt;/h2&gt;


	&lt;p&gt;Our company has been offering &lt;a href="http://www.planetargon.com/hosting.html"&gt;Ruby on Rails hosting&lt;/a&gt; for nearly four years and a few years longer with the &lt;span class="caps"&gt;PHP5&lt;/span&gt; and &lt;a href="http://postgresql.org"&gt;PostgreSQL&lt;/a&gt; world. Given that, we&amp;#8217;ve seen customers come to us at the last minute before they launch and wanting to get things setup and deployed right away. Quite often, this is their first experience deploying a Ruby on Rails application and there has historically been a semi-steep learning curve to do this. It&amp;#8217;s really encouraged that you get this stuff figured out ahead of time. If you&amp;#8217;re lucky, some hosting companies might offer cheaper plans so that you can begin to get things setup a few months or ahead of time and upgrade your plan prior to the big launch. This is how our &lt;a href="http://railsboxcar.com"&gt;Rails Boxcar&lt;/a&gt; hosting plans work.&lt;/p&gt;


	&lt;p&gt;We&amp;#8217;ve seen a lot of customers avoid engaging with a hosting company more than a week or two before their launch because they want to reduce their monthly expenses, but the reality is that if you end up saving yourself a few hours of work by not scrambling at the last minute to get things setup, the hosting costs will pay for themselves. Several of our customers have learned this the hard way and as a result, this has resulted in extra stress that might have been avoidable if things had been ready earlier on.&lt;/p&gt;


	&lt;p&gt;The basic process that our team is to get a &lt;em&gt;real&lt;/em&gt; deployment environment setup as early in the design and development process as possible. Often times, this will be 4-6 months before launch on larger projects. In our process, we aim to have a staging environment that mirrors our production environment. We tend to use a &lt;a href="http://railsboxcar.com"&gt;Boxcar Lite&lt;/a&gt; plan for our own client projects and get the deployment process working and automated. When it&amp;#8217;s time to launch, we can easily upgrade the Boxcars with more resources to one or more Plus plans.&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re in the market for a hosting company, do keep us in mind, but if we can offer any advice, be sure to find out how you can scale upwards to meet your initial 3-6 month growth targets. Don&amp;#8217;t worry about planning too far ahead in the future, until you see how traffic picks up and how the application and databases perform, you&amp;#8217;ll be spending a lot of time guessing without data. If you&amp;#8217;re new to this and aren&amp;#8217;t sure, I&amp;#8217;d encourage you to speak with a &lt;a href="http://www.planetargon.com/deployment-consulting"&gt;Ruby on Rails deployment specialist&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;A few things to consider here:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Get your &lt;a href="http://capify.org"&gt;Capistrano&lt;/a&gt; or Vlad deployment tasks setup early. Make sure everything works and set it up to work with multiple deployment environments. (staging, production, etc.)
	&lt;ul&gt;
	&lt;li&gt;Use &lt;a href="http://www.robbyonrails.com/articles/2008/04/15/boxcar-conductor-rails-deployment-made-easy"&gt;Boxcar Conductor&lt;/a&gt; with your Rails Boxcar. (&lt;a href="http://github.com/planetargon/boxcar-conductor/tree/master"&gt;Boxcar Conductor on github&lt;/a&gt;)&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
		&lt;li&gt;Use the &lt;strong&gt;&lt;span class="caps"&gt;HTTP&lt;/span&gt; Basic Authentication&lt;/strong&gt;, which is available in Ruby on Rails to keep peeping toms (competitors, search crawlers, spammers, etc.. ) out of your project while you&amp;#8217;re deploying to your staging environment. We tend to give out a &lt;code&gt;.htaccess&lt;/code&gt; user/pass with this method to the stakeholders so they can access the site whenver they need to.
	&lt;ul&gt;
	&lt;li&gt;Rails documentation on &lt;span class="caps"&gt;HTTP&lt;/span&gt; Basic Authentication: &lt;a href="http://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Basic/ControllerMethods.html"&gt;view docs&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Watch a Railscast for using &lt;span class="caps"&gt;HTTP&lt;/span&gt; Basic Authentication: &lt;a href="http://railscasts.com/episodes/82"&gt;watch screencast&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
		&lt;li&gt;Get your automated tasks (cron jobs) setup way before launch. Verify that things are working here at the right times
	&lt;ul&gt;
	&lt;li&gt;Extra-credit: Check server time settings to make sure you&amp;#8217;re not running big tasks at time periods when heavy traffic is expected&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
		&lt;li&gt;Make sure your hosting provider has monitoring setup. It&amp;#8217;s good to gauge uptime % from launch
	&lt;ul&gt;
	&lt;li&gt;Extra-credit: Setup your own monitoring with &lt;a href="http://pingdom.com/"&gt;Pingdom&lt;/a&gt; or similar service to make sure you know when things are down. (You can audit your hosting provider this way!)&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;There are a handful of really great hosting companies out there for Ruby on Rails. Be sure to do your homework early! This isn&amp;#8217;t something you want to do at the last minute.&lt;/p&gt;


	&lt;p&gt;Reminder: &lt;strong&gt;Keep your project releasable at all times.&lt;/strong&gt;&lt;/p&gt;


	&lt;h2&gt;Search Engines and Analytics&lt;/h2&gt;


	&lt;p&gt;Before the big launch, be sure that you have outlined a consistent pattern for managing the &lt;span class="caps"&gt;HTML&lt;/span&gt; page titles on each page. Getting targeted traffic to your new web application is (usually) vital. Our team has adopted a basic pattern that we use throughout the application. This way we don&amp;#8217;t have to go through at the last minute and figure out where titles are and/or aren&amp;#8217;t being set.&lt;/p&gt;


	&lt;p&gt;In a previous post, I &lt;a href="http://www.robbyonrails.com/articles/2008/03/26/managing-seo-friendly-html-titles-with-rails"&gt;shared a basic plugin&lt;/a&gt; that our team uses on projects to manage page titles on a view-by-view basis.&lt;/p&gt;


	&lt;p&gt;Additionally, be sure to take advantage of using descriptive permalink URLs.&lt;/p&gt;


	&lt;p&gt;Another tip is to setup your application with analytics (&lt;a href="http://google.com/analytics"&gt;google analytics&lt;/a&gt; is free!) If there is one thing that I wish we had setup from day one on every project in the past, was a set of conversion goals. So, be sure to get into your analytics account and prepare your application so that you can track these goals from the moment your application is launched. Collecting as much data about your visitor&amp;#8217;s usage habits is going to help you in the coming weeks and months as you tune things based off of feedback and this data. Also, after you begin to introduce changes, you can analyze these metrics to verify that you&amp;#8217;re improving things and not the opposite.&lt;/p&gt;


	&lt;p&gt;So, be sure that you are doing the following:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Have implemented descriptive page titles and urls&lt;/li&gt;
		&lt;li&gt;Are ready to track your site visitor&amp;#8217;s usage habits from the starting gate
	&lt;ul&gt;
	&lt;li&gt;Conversion goals for obvious things like: sign-ups/registrations, viewing your product tour, contact requests, etc.&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;When Things Go Wrong / Tracking Exceptions&lt;/h2&gt;


	&lt;p&gt;What happens when things go wrong? We&amp;#8217;ve been amazed by how many projects we&amp;#8217;ve seen have been in production for months/years and lacking something that seemed so obvious. Exception notifications! All too often, we&amp;#8217;ve seen teams totally unaware that things were failing for their customers and not being reported to anybody. The easiest way to track exceptions in the past was to use the &lt;a href="http://github.com/rails/exception_notification/tree/master"&gt;exception_notification&lt;/a&gt; plugin that the Rails team manages. You can have this plugin send your development team emails with a backtrace and all the goodies that&amp;#8217;d normally show up in a 500 error. At a minimum, you should be using something like this.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Tip: Make sure your hosting environment can send out emails! (otherwise, you&amp;#8217;ll never know about these problems&amp;#8230;eek!)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;However, in the last year, the Rails community has seen two options, &lt;a href="http://getexceptional.com/"&gt;Exceptional&lt;/a&gt; and &lt;a href="http://www.hoptoadapp.com/"&gt;Hoptoad&lt;/a&gt; introduced for managing exceptions. Our team has only used Exceptional so far, because our good friends at &lt;a href="http://www.contrast.ie/"&gt;Contrast&lt;/a&gt; invited us to be early beta-testers for their new service. We love the Exceptional&amp;#8217;s integration with Lighthouse, which is the bug/issue tracking application that we&amp;#8217;re currently using. With Exceptional, our team is able to search through and track exceptions in our application and have a good meter on the overall health of our application. This solution works so much than the email-based approach because we can track which exceptions have been opened and sent to Lighthouse and if they&amp;#8217;ve been closed by someone already.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve heard great things about Hoptoad as well, but have yet to test it out. Would be interested to read a comparison between the two and am curious if there are other services for this currently.&lt;/p&gt;


	&lt;h2&gt;Non-default 404 and 500 pages&lt;/h2&gt;


	&lt;p&gt;Honestly, this is one of those things that we tend to forget about until the last minute. When you&amp;#8217;re launching a new project, you&amp;#8217;re bound to have a bug and/or a few broken links not accounted for. What you want to avoid is having your customers end up on an unhelpful page that looks like this:&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/6txe/the-page-you-were-looking-for-doesn-t-exist-404"&gt;&lt;img src="http://img.skitch.com/20081215-q11ckmua6qe5gf4nsd6ghptw83.preview.jpg" alt="The page you were looking for doesn't exist (404)" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;It doesn&amp;#8217;t take too long to put something together that is a bit more helpful for your visitors.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/6txm/alphaclone-page-not-found"&gt;&lt;img src="http://img.skitch.com/20081215-12prkpg4b98rptwiwy637ss1.preview.jpg" alt="AlphaClone — Page not found" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;So, do yourself a favor and add a ticket for your designers to design a custom 404 and 500 pages to replace the defaults that are provided by Ruby on Rails in &lt;code&gt;public/&lt;/code&gt;.&lt;/p&gt;


	&lt;h2&gt;Hold your client&amp;#8217;s hands&lt;/h2&gt;


	&lt;p&gt;If you&amp;#8217;re working with startups, do remember that this is quite possibly their first launch. It&amp;#8217;s important to remember that they&amp;#8217;re going to be going through their own spectrum of feelings and it&amp;#8217;s our job to help get them through the process with an eased mind. Show them that you have things covered, that things are ready to go, alert them when things pop up&amp;#8230; in a nutshell. Keep them informed about the challenges and do what you can help to manage their stress. If they&amp;#8217;ve just contracted you for an extended period of time to help get their &lt;strong&gt;big idea&lt;/strong&gt; designed and developed, remember that this launch is just the beginning of the race for them. They have a big journey ahead of them and you just helped them get their new car engine built. Make sure they know that things are likely to breakdown along the way, need to be refueled (refactor! refactor!), and need service repairs. The worst thing you can do is set the expectation that nothing will go wrong once their application is released into the wild. They need to budget for this early on so that they can pace themselves after launch. (this is a big topic definitely worth of it&amp;#8217;s own post)&lt;/p&gt;


	&lt;p&gt;Just remember that this should be a big celebration for your team and client. Remember to celebrate! (and then follow it with a retrospective)&lt;/p&gt;


	&lt;h2&gt;In Conclusion&lt;/h2&gt;


	&lt;p&gt;As mentioned, these are just a handful of things that we have learned to avoid overlooking (through trial and error). I&amp;#8217;m hoping to share more thoughts on launching in the near future and would love to hear from all of you on things that you&amp;#8217;ve come across. What works? What doesn&amp;#8217;t work?&lt;/p&gt;


	&lt;p&gt;What is on your checklist for launching successful projects?&lt;/p&gt;


	&lt;h3&gt;Related Articles&lt;/h3&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2008/05/22/the-art-of-delivery-part-2"&gt;The Art of Delivery, part 2&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2006/04/21/agile-development-begins-within"&gt;Agile development begins within&amp;#8230;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/06/17/audit-your-rails-development-team"&gt;Audit Your Rails Development Team&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/12/17/embracing-chaos-part-1"&gt;Embracing Chaos, part 1&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=cBCXO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=cBCXO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=6FOUo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=6FOUo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=YQdoO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=YQdoO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=VKn2O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=VKn2O" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/485068757" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 14 Dec 2008 19:28:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:48f0cf4b-9683-408a-9c1d-92afa8a6ddae</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/485068757/launching-ruby-on-rails-projects-a-checklist</link>
      <category>Business</category>
      <category>Ruby on Rails</category>
      <category>PLANET ARGON</category>
      <category>clients</category>
      <category>hosting</category>
      <category>deployment</category>
      <category>launching</category>
      <category>capistrano</category>
      <category>boxcar</category>
      <category>planetargon</category>
      <category>team</category>
      <category>communication</category>
      <category>seo</category>
      <category>design</category>
      <category>development</category>
      <category>tips</category>
      <category>projects</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/12/14/launching-ruby-on-rails-projects-a-checklist</feedburner:origLink></item>
    <item>
      <title>AlphaClone on PostgreSQL and Ruby on Rails</title>
      <description>&lt;div class="thumbnail" style="float:right;"&gt;&lt;a href="http://alphaclone.com"&gt;&lt;img src="http://img.skitch.com/20081212-qcrp1ammxkuutyi16xtfa1w5ni.preview.jpg" alt="tour-ss-full-berkshire.jpg (JPEG Image, 370x713 pixels)" /&gt;&lt;/a&gt;&lt;/div&gt;
Earlier this week, our team launched a client&amp;#8217;s project into the public. We began working on it early this year and it was quite an endeavor for our team. The company that we helped launch is &lt;a href="http://alphaclone.com"&gt;AlphaClone&lt;/a&gt;, &lt;em&gt;a premier stock research and portfolio simulation service for individuals and professional investors alike. Clone, backtest and track over 230 top fund manager portfolios. More than 15,000 pre-generated clones and nearly limitless possibilities based on your own custom groups of funds.&lt;/em&gt; &lt;a href="http://alphaclone.com/tour"&gt;Take a tour of AlphaClone&amp;#8230;&lt;/a&gt;

	&lt;p&gt;&lt;a href="http://alphaclone.com"&gt;&lt;img src="http://alphaclone.com/images/logo-alphaclone.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;It&amp;#8217;s hard to deny that I&amp;#8217;m insanely proud of the team at &lt;a href="http://planetargon.com"&gt;Planet Argon&lt;/a&gt; for bringing our client&amp;#8217;s business idea to reality. We&amp;#8217;ve been enjoying keeping up on how the press is responding so far since they&amp;#8217;ve launched. I expect that they&amp;#8217;ll do well with their business endeavor and look forward to helping them evolve and expand.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve been asked to share some stories and lessons learned throughout the project. Given that we tackled a lot on the Interaction Design side of things in addition to relying a lot more on some of the advanced features of PostgreSQL (we&amp;#8217;re dealing with a &lt;span class="caps"&gt;TON&lt;/span&gt; of data here), we have things to share. So, stay tuned as I&amp;#8217;ll be highlighting some of those lessons over the coming week(s).&lt;/p&gt;


	&lt;p&gt;Additionally, if you&amp;#8217;re looking for a team to help you execute your next big idea, &lt;a href="http://planetargon.com/contact.html"&gt;give us a call&lt;/a&gt;!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=kS0IO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=kS0IO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=OyVlo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=OyVlo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=SI9oO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=SI9oO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=PiXhO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=PiXhO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/482724291" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 12 Dec 2008 08:23:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:fe6c4690-e703-40f5-9f9d-1afafb3ceea7</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/482724291/alphaclone-on-postgresql-and-ruby-on-rails</link>
      <category>Business</category>
      <category>Ruby on Rails</category>
      <category>PostgreSQL</category>
      <category>PLANET ARGON</category>
      <category>clients</category>
      <category>development</category>
      <category>alphaclone</category>
      <category>projects</category>
      <category>team</category>
      <category>planetargon</category>
      <category>postgresql</category>
      <category>stocks</category>
      <category>data</category>
      <category>graphs</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/12/12/alphaclone-on-postgresql-and-ruby-on-rails</feedburner:origLink></item>
    <item>
      <title>Interviewed by Database Radio Podcast</title>
      <description>&lt;p&gt;Bob Zurek, the Chief Technology Officer at &lt;a href="http://www.enterprisedb.com/"&gt;EnterpriseDB&lt;/a&gt; interviewed me a few months ago for their new &lt;a href="http://www.enterprisedb.com/learning/database_radio.do"&gt;Database Radio podcast&lt;/a&gt;. It finally was published last week. Bob and I had a nice conversation about PostgreSQL and it&amp;#8217;s community, our use of PostgreSQL with Ruby, Ruby on Rails, and development tools/methods.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/68ej/database-radio-enterprisedb"&gt;&lt;img src="http://img.skitch.com/20081211-btkycyrke9ctrsqseqhhr1is1m.preview.jpg" alt="Database Radio | EnterpriseDB" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;You can listen to &lt;a href="http://www.enterprisedb.com/openDownloads.do?productId=416&amp;#38;redirectReason=true&amp;#38;productVersion=otherDownload"&gt;the podcast mp3&lt;/a&gt; and/or &lt;a href="http://www.enterprisedb.com/learning/dbr_russell.do"&gt;read the transcript&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=xQFBO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=xQFBO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=zqK5o"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=zqK5o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=XIs4O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=XIs4O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=kP4EO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=kP4EO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/481832460" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 11 Dec 2008 11:46:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:f4455442-a72d-4b86-9521-ff22c2b4512c</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/481832460/interviewed-by-database-radio-podcast</link>
      <category>Business</category>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>PostgreSQL</category>
      <category>PLANET ARGON</category>
      <category>interview</category>
      <category>podcast</category>
      <category>planetargon</category>
      <category>ruby</category>
      <category>postgresql</category>
      <category>enterprisedb</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/12/11/interviewed-by-database-radio-podcast</feedburner:origLink></item>
    <item>
      <title>Lighthouse tickets and Git branching</title>
      <description>&lt;p&gt;We&amp;#8217;re currently using Lighthouse as our ticketing system with clients for maintenance/bug requests. We&amp;#8217;re also using Github for all of our major client projects. I&amp;#8217;m sure that many of you take advantage of the Lighthouse service that Github allows you to use so that your commits can trigger actions on your tickets in Lighthouse.&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re not already, you might consider running (&lt;a href="http://www.robbyonrails.com/articles/2007/01/10/meet-the-cheat"&gt;cheat&lt;/a&gt; ?):&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;code&gt;cheat lighthouse&lt;/code&gt;&lt;/li&gt;
	&lt;/ul&gt;


&lt;pre&gt;&lt;code&gt;
lighthouse:
  - Commit comment [#213]
  Adds message as comment to ticket #213

    * tagged - adds tag to the ticket (does not replace)
    * responsible - sets the user responsible for ticket (responsible:none to
    clear)
    * milestone - sets the milestone for ticket (milestone:none to clear)
    * state - sets state (new, open, hold, resolved, invalid)

  - Commit comment [#213 tagged:committed responsible:johan milestone:"Launch" 
  state:resolved]
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;With your commit messages, you can just pass in the ticket # and resolve your ticket without needing to interact with Lighthouse too much.&lt;/p&gt;


	&lt;p&gt;Okay, so one of the problems that I&amp;#8217;ve had with this process is that I have had to constantly look back in my browser to see what the ticket # was that I was working on. So, I decided to start writing it down on a notepad as I was working through tickets so that I could look down at my desk, but this wasn&amp;#8217;t terribly efficient either.&lt;/p&gt;


	&lt;p&gt;So, I decided to start leveraging the features of git to help me out. For each ticket that I work on, this is my process.&lt;/p&gt;


	&lt;p&gt;In Lighthouse, I decide which ticket I&amp;#8217;m going to work on next. I then create a local branch using the ticket # in the name. Example: &lt;code&gt;LH_1623&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;The workflow ends up looking like:&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;alphaclone git:(master): git checkout -b LH_1615&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;alphaclone git:(LH_1615):&lt;/code&gt; &amp;lt;&amp;#8212;I am using zsh and have it display the current local branch&lt;/p&gt;


	&lt;p&gt;I then work on this ticket. Since I&amp;#8217;m working within the branch and my prompt reminds me what ticket # is being worked on, it makes it easy for me to add this into my commit message.&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;git commit -m "Fixed the do-whacky issue with data importing. [#1615 state:resolved]"&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;At some point, this will be ready to be merged back into master and pushed to Github.&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;git checkout master&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;git merge LH_1615&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;git push origin master&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;Github will take your commit message and pass it over to Lighthouse and your ticket will be marked as resolved automatically. This workflow has saved me a lot of time from navigating through Lighthouse and has also helped me stay focused on individual tickets throughout the day. Quite often, I&amp;#8217;ll get interrupted by something non-development related and seeing the ticket # in my terminal helps get me back on task.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve managed to encourage a few of the others at &lt;a href="http://planetargon.com"&gt;Planet Argon&lt;/a&gt; to adopt this ticket-based branch process as well so that when we need to collaborate on a ticket we publish the ticket branch to Github so that others can work on it as well. (happens a lot when a designer and developer need to work together on the same issue/feature)&lt;/p&gt;


	&lt;p&gt;Anyhow, just a quick little introduction to something simple that I did that has definitely helped me become a little more efficient throughout the day. Perhaps you have a better approach and/or tips for others that you&amp;#8217;d like to share?&lt;/p&gt;


	&lt;h2&gt;Related Posts&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/01/10/meet-the-cheat"&gt;Meet the Cheat&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2008/04/10/git-svn-is-a-gateway-drug"&gt;git-svn is a gateway drug&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2008/04/11/interviewed-by-hanselminutes"&gt;Interviewed by Hanselminutes&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=th08O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=th08O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=O36co"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=O36co" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=2LqhO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=2LqhO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=pIwZO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=pIwZO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/481816906" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 11 Dec 2008 11:36:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:6881691f-f0de-4d0e-b0ab-973dd222c949</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/481816906/lighthouse-tickets-and-git-branching</link>
      <category>Programming</category>
      <category>git</category>
      <category>lighthouse</category>
      <category>github</category>
      <category>workflow</category>
      <category>development</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/12/11/lighthouse-tickets-and-git-branching</feedburner:origLink></item>
    <item>
      <title>The HTTParty has just begun</title>
      <description>&lt;p&gt;After releasing the new RubyURL &lt;span class="caps"&gt;API&lt;/span&gt;, I decided that it was time to look around at libraries to interact with it. I came across a new Ruby gem from &lt;a href="http://addictedtonew.com/about/"&gt;John Nunemaker&lt;/a&gt; named, &lt;a href="http://httparty.rubyforge.org/"&gt;HTTParty&lt;/a&gt;, which aims to make it easy to talk to &lt;span class="caps"&gt;XML&lt;/span&gt; and &lt;span class="caps"&gt;JSON&lt;/span&gt;-based web services. Be sure to &lt;a href="http://railstips.org/2008/7/29/it-s-an-httparty-and-everyone-is-invited"&gt;read John&amp;#8217;s announcement of HTTParty&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;So, I decided it might be fun to introduce more people to the gem by showing you all how to use it to talk to the new RubyURL &lt;span class="caps"&gt;API&lt;/span&gt;.&lt;/p&gt;


	&lt;h2&gt;Install HTTParty&lt;/h2&gt;


	&lt;p&gt;Before we get started, you&amp;#8217;ll need to install the HTTParty gem with the following command:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
   ~ : sudo gem install httparty
  Password:
  When you HTTParty, you must party hard!
  Successfully installed httparty-0.1.6
  1 gem installed
  Installing ri documentation for httparty-0.1.6...
  Installing RDoc documentation for httparty-0.1.6...
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Great! Now that &lt;strong&gt;we&amp;#8217;re ready to party hard&lt;/strong&gt;, let&amp;#8217;s build something.&lt;/p&gt;


	&lt;h2&gt;Talking to the RubyURL &lt;span class="caps"&gt;API&lt;/span&gt;&lt;/h2&gt;


	&lt;p&gt;The &lt;a href="http://rubyurl.com/api"&gt;RubyURL &lt;span class="caps"&gt;API&lt;/span&gt;&lt;/a&gt; currently supports both &lt;span class="caps"&gt;XML&lt;/span&gt; and &lt;span class="caps"&gt;JSON&lt;/span&gt;, which are each supported by HTTParty. The great thing about HTTParty is that all you need to do is include it in a class and you&amp;#8217;re able to quickly talk to remote services.&lt;/p&gt;


	&lt;p&gt;In this following example, we&amp;#8217;re going to create a new class called &lt;code&gt;Rubyurl&lt;/code&gt;.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Rubyurl&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;What we&amp;#8217;ll want to do now is include the HTTParty library. (&lt;strong&gt;note:&lt;/strong&gt; you&amp;#8217;ll need to require both rubygems and httparty gems and I&amp;#8217;ll skip those lines in following code samples)&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Rubyurl&lt;/span&gt;
  &lt;span class="ident"&gt;include&lt;/span&gt; &lt;span class="constant"&gt;HTTParty&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;The HTTParty provides &lt;a href="http://github.com/jnunemaker/httparty/tree/master/lib/httparty.rb"&gt;a few class methods&lt;/a&gt;, which we can use to configure our library. We&amp;#8217;ll go ahead and specify the &lt;code&gt;base_uri&lt;/code&gt;, which we&amp;#8217;ll set to &lt;code&gt;rubyurl.com&lt;/code&gt;.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Rubyurl&lt;/span&gt;
  &lt;span class="ident"&gt;include&lt;/span&gt; &lt;span class="constant"&gt;HTTParty&lt;/span&gt;
  &lt;span class="ident"&gt;base_uri&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;rubyurl.com&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Now that our class is setup to talk to the &lt;a href="http://rubyurl.com"&gt;Rubyurl.com&lt;/a&gt; site, we&amp;#8217;ll want to add a new method which we can use to communicate with the RubyURL &lt;span class="caps"&gt;API&lt;/span&gt;. We&amp;#8217;ll call this &lt;code&gt;shorten&lt;/code&gt; as we&amp;#8217;re using RubyURL to shorten long URLs&amp;#8230; right?&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Rubyurl&lt;/span&gt;
  &lt;span class="ident"&gt;include&lt;/span&gt; &lt;span class="constant"&gt;HTTParty&lt;/span&gt;
  &lt;span class="ident"&gt;base_uri&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;localhost:3000&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;

  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;self.shorten&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="ident"&gt;website_url&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Our new &lt;code&gt;shorten&lt;/code&gt; method will expect us to provide it with a website url, which we&amp;#8217;ll want RubyURL to return a shortened &lt;span class="caps"&gt;URL&lt;/span&gt; for. The &lt;span class="caps"&gt;PATH&lt;/span&gt; for the &lt;span class="caps"&gt;API&lt;/span&gt; that we&amp;#8217;ll want to talk to is: &lt;code&gt;/api/links&lt;/code&gt;, which we&amp;#8217;re expected to pass &lt;span class="caps"&gt;XML&lt;/span&gt; or &lt;span class="caps"&gt;JSON&lt;/span&gt; to.&lt;/p&gt;


	&lt;p&gt;Here are two examples of using the RubyURL &lt;span class="caps"&gt;API&lt;/span&gt; with HTTParty.&lt;/p&gt;


	&lt;h3&gt;RubyURL via &lt;span class="caps"&gt;JSON&lt;/span&gt; w/HTTParty&lt;/h3&gt;


	&lt;p&gt;We&amp;#8217;re going to use the &lt;code&gt;post&lt;/code&gt; method that is provided with HTTParty to send a request to &lt;code&gt;/api/links.json&lt;/code&gt;. As you can see, we&amp;#8217;re providing the original website url to the web service.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Rubyurl&lt;/span&gt;
  &lt;span class="ident"&gt;include&lt;/span&gt; &lt;span class="constant"&gt;HTTParty&lt;/span&gt;
  &lt;span class="ident"&gt;base_uri&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;rubyurl.com&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;

  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;self.shorten&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="ident"&gt;website_url&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;post&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;/api/links.json&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="symbol"&gt;:query&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="symbol"&gt;:link&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="symbol"&gt;:website_url&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ident"&gt;website_url&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;When ran, it&amp;#8217;ll produce the following:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;  &lt;span class="punct"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="constant"&gt;Rubyurl&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;shorten&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;http://github.com/jnunemaker/httparty/tree/master/lib/httparty.rb&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;inspect&lt;/span&gt;
  &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;{&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;link&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;=&amp;gt;{&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;permalink&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;=&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;http://rubyurl.com/uJVu&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;website_url&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;=&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;http://github.com/jnunemaker/httparty/tree/master/lib/httparty.rb&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;}}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Pretty simple, eh?&lt;/p&gt;


	&lt;h3&gt;RubyURL via &lt;span class="caps"&gt;XML&lt;/span&gt; w/HTTParty&lt;/h3&gt;


	&lt;p&gt;The great thing about HTTParty is that you can use &lt;span class="caps"&gt;XML&lt;/span&gt; without changing much.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Rubyurl&lt;/span&gt;
  &lt;span class="ident"&gt;include&lt;/span&gt; &lt;span class="constant"&gt;HTTParty&lt;/span&gt;
  &lt;span class="ident"&gt;base_uri&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;rubyurl.com&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;

  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;self.shorten&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="ident"&gt;website_url&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;post&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;/api/links.xml&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="symbol"&gt;:query&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="symbol"&gt;:link&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="symbol"&gt;:website_url&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ident"&gt;website_url&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Produces the following&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_xml "&gt;&lt;span class="punct"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="tag"&gt;xml&lt;/span&gt; &lt;span class="attribute"&gt;version&lt;/span&gt;&lt;span class="punct"&gt;=\&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;1.0\&amp;quot; encoding=\&amp;quot;UTF-8\&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;?&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;link&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;website_url&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;http://github.com/jnunemaker/httparty/tree/master/lib/httparty.rb&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;website_url&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;permalink&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;http://rubyurl.com/uJVu&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;permalink&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;link&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;h3&gt;Closing thoughts&lt;/h3&gt;


	&lt;p&gt;So&amp;#8230; there you have it. HTTParty makes it extremely easy to interact with various web services that work over &lt;span class="caps"&gt;HTTP&lt;/span&gt;. I&amp;#8217;d encourage you all to take a few minutes to experiment with it and see what crazy ideas that come to mind during the process. :-)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=K2NRN"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=K2NRN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=OYeAn"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=OYeAn" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=NrMGN"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=NrMGN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=A5bjN"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=A5bjN" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/466849288" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 26 Nov 2008 19:54:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:930f06ef-ac0d-48f9-b0db-2fd14e6f161b</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/466849288/the-httparty-has-just-begun</link>
      <category>RubyURL</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>rubyurl</category>
      <category>REST</category>
      <category>api</category>
      <category>json</category>
      <category>xml</category>
      <category>httparty</category>
      <category>http</category>
      <category>development</category>
      <category>code</category>
      <category>tutorial</category>
      <category>rubygems</category>
      <category>gem</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/11/26/the-httparty-has-just-begun</feedburner:origLink></item>
    <item>
      <title>Lesson Learned: Git Ref Naming</title>
      <description>&lt;p&gt;Our team has been working our way into the Git world. One of our big client projects is now 100% git while the other is still on Subversion for another month or so. (I&amp;#8217;m getting by with &lt;a href="http://www.robbyonrails.com/articles/2008/04/10/git-svn-is-a-gateway-drug"&gt;git-svn&lt;/a&gt;, the gateway drug on that). We&amp;#8217;ve had pretty much nothing but success with Git for quite some time, but recently this repository started to get chaotic, which has eaten up time&amp;#8230; which isn&amp;#8217;t conducive to productivity.&lt;/p&gt;


	&lt;p&gt;So, I wanted to share a quick lesson that we learned today after scratching our head for a while. It&amp;#8217;s important that you avoid having a branch on a remote repository that shares the name of a tag in your local and/or remote repository.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;I REPEAT&lt;/span&gt;.&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;It&amp;#8217;s bad mojo to have a tag and branch share the same name. Things that you&amp;#8217;d expect &lt;em&gt;to just work&lt;/em&gt;... don&amp;#8217;t. This was causing us to see warnings and errors like the following, which we weren&amp;#8217;t really sure what to make of it.&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&amp;#8220;warning: refname &amp;#8216;staging&amp;#8217; is ambiguous.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&amp;#8220;error: src refspec staging matches more than one.&amp;#8221;&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;This started about two weeks ago when we started a few new remote branches: &lt;em&gt;staging&lt;/em&gt; and &lt;em&gt;design&lt;/em&gt;. It seemed to be going okay but we managed to muck up things when we merged those two together and some of us were having success fetching/pulling/pushing to &lt;em&gt;staging&lt;/em&gt; and others were having to specify &lt;code&gt;:heads/staging&lt;/code&gt; and couldn&amp;#8217;t have a local branch named &lt;em&gt;staging&lt;/em&gt;. Needless to say, it was causing some problems and slowing us down.&lt;/p&gt;


	&lt;p&gt;This afternoon, we finally noticed in the GitHub interface that there was a tag named &lt;code&gt;staging&lt;/code&gt;. Hmm&amp;#8230; interesting. We verified this by using &lt;code&gt;git show-ref&lt;/code&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
git:(master): git show-ref | grep staging
6a18119ca9.... refs/heads/staging
82caa5f121.... refs/remotes/origin/staging
6a18119ca9.... refs/tags/staging
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Notice the tag reference at the end? After asking in #git, we were able to remove the tag with the following:&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;git tag -d staging&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;Then we needed to remove the reference of &lt;code&gt;staging&lt;/code&gt; on Github with &lt;code&gt;git push origin :staging&lt;/code&gt;. (we got rid of the remote branch temporarily as well so that we could clean this up).&lt;/p&gt;


	&lt;p&gt;The next step was to push our local branch back out to the remote branch &lt;code&gt;git push origin staging:staging&lt;/code&gt;.... and now we&amp;#8217;re back in business with a simple:&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;git checkout --track -b staging origin/staging&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;Anyhow, if you end up having those warnings/errors above, you might take a look at &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-show-ref.html"&gt;git-show-ref&lt;/a&gt; to see what is in your local repository as this could be causing you some unnecessary headaches.&lt;/p&gt;


	&lt;p&gt;Kudos to &lt;a href="http://allisbe.com"&gt;Allison&lt;/a&gt; for taking the time to really read and digest the git documentation, which helped us figure this shit out. :-)&lt;/p&gt;


	&lt;p&gt;Since we&amp;#8217;re still learning to get around through things like this, if you have any more insight into this issue, feel free to help educate us a bit by sharing your wisdom in response to this post. :-)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=pzXhL"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=pzXhL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=Y1Pel"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=Y1Pel" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=6DpzL"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=6DpzL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=ydTdL"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=ydTdL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/396879812" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 18 Sep 2008 23:23:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:a3d33486-399d-4bd6-99ce-934e1adce9dc</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/396879812/lesson-learned-git-ref-naming</link>
      <category>Programming</category>
      <category>git</category>
      <category>code</category>
      <category>source</category>
      <category>control</category>
      <category>lesson</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/09/18/lesson-learned-git-ref-naming</feedburner:origLink></item>
    <item>
      <title>MySQL is just a toy</title>
      <description>&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/iare/twitterrific"&gt;&lt;img src="http://img.skitch.com/20080911-ehrsx5um7ush92xy4nd4784s6d.preview.jpg" alt="Twitterrific" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;Are you using PostgreSQL? EnterpriseDB want&amp;#8217;s to hear your story at &lt;a href="http://www.postgresrocks.com/"&gt;Postgres Rocks&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=DU06L"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=DU06L" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=77RTl"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=77RTl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=MvFML"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=MvFML" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=8H9fL"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=8H9fL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/389896265" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 11 Sep 2008 13:04:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:0255042f-b378-4d7a-b634-e38f3b3ad015</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/389896265/mysql-is-just-a-toy</link>
      <category>PostgreSQL</category>
      <category>mysql</category>
      <category>postgresql</category>
      <category>sarcasm</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/09/11/mysql-is-just-a-toy</feedburner:origLink></item>
    <item>
      <title>Ubiquity meets RubyURL</title>
      <description>&lt;p&gt;&lt;a href="http://www.the-love-shack.net"&gt;Alex Malinovich&lt;/a&gt; decided to take some time this afternoon to write a &lt;a href="https://wiki.mozilla.org/Labs/Ubiquity"&gt;Ubiquity&lt;/a&gt; command for RubyURL using the &lt;a href="http://rubyurl.com/api"&gt;new RubyURL &lt;span class="caps"&gt;API&lt;/span&gt;&lt;/a&gt;. You can take a look at Alex&amp;#8217;s Ubiquity &lt;a href=":http://github.com/robbyrussell/rubyurl/tree/master/public/javascripts/ubiquity.js"&gt;code&lt;/a&gt; for RubyURL. He&amp;#8217;s taking advantage of the &lt;span class="caps"&gt;JSON&lt;/span&gt; support that I added to RubyURL this weekend and &lt;a href="http://jquery.com/"&gt;JQuery&lt;/a&gt;. Be sure to read &lt;a href="http://www.the-love-shack.net/2008/09/02/ubiquity-coolness/"&gt;Alex&amp;#8217;s blog post&lt;/a&gt;, which includes a screencast! =)&lt;/p&gt;


	&lt;p&gt;Also! We added this to RubyURL so that if you have Ubiquity installed, you&amp;#8217;ll be presented with the following the next time you visit: &lt;a href="http://rubyurl.com"&gt;http://rubyurl.com&lt;/a&gt;.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/baggend/w75c/rubyurl-keep-it-short-and-sweet"&gt;&lt;img src="http://img.skitch.com/20080903-q3mb4rufi4b6aptujsgftmwt8j.preview.jpg" alt="RubyURL » Keep it short (and sweet)" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;h3&gt;Related Posts&lt;/h3&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2008/08/31/the-new-rubyurl-api"&gt;The new RubyURL &lt;span class="caps"&gt;API&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2008/01/06/rubyurl-through-quicksilver"&gt;RubyURL through QuickSilver&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/08/09/rubyurl-bookmarklet-screencast"&gt;RubyURL bookmarklet screencast&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=mPh3O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=mPh3O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=nvU0o"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=nvU0o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=ozJPO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=ozJPO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=9ONXO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=9ONXO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/381895315" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 02 Sep 2008 20:41:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:5d032c3c-119f-4c8e-807a-cb9813056fd1</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/381895315/ubiquity-meets-rubyurl</link>
      <category>RubyURL</category>
      <category>rubyurl</category>
      <category>jquery</category>
      <category>ubiquity</category>
      <category>alex</category>
      <category>firefox</category>
      <category>javascript</category>
      <category>api</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/09/02/ubiquity-meets-rubyurl</feedburner:origLink></item>
    <item>
      <title>Google Chrome: discuss</title>
      <description>&lt;p&gt;I&amp;#8217;m sure that most of you heard the news that Google is releasing a &lt;a href="http://googleblog.blogspot.com/2008/09/fresh-take-on-browser.html"&gt;new web browser named Chrome&lt;/a&gt;. Their &lt;a href="http://books.google.com/books?id=8UsqHohwwVYC&amp;#38;printsec=frontcover"&gt;comic for the announcement&lt;/a&gt; was very refreshing and entertaining read. Granted&amp;#8230; nobody that I know has seen it (as of today)...&lt;/p&gt;


	&lt;p&gt;For me, I&amp;#8217;m really interested in seeing what they&amp;#8217;ve done to &lt;em&gt;hopefully&lt;/em&gt; improve some of the short-comings of the user experience through their interaction design process. For example, tabs containing their own url/search fields sounds refreshing (I really dislike the hierarchy currently). Also, I&amp;#8217;m really looking forward to their dashboard-like default page.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/w49a/google-chrome-google-book-search"&gt;&lt;img src="http://img.skitch.com/20080902-8qdks9kdwcdtdq6f48sjrcsyi9.preview.jpg" alt="Google Chrome - Google Book Search" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;From a web development standpoint, it definitely raises questions about what we&amp;#8217;ll be able to do in the coming year(s).&lt;/p&gt;


	&lt;p&gt;What are your initial thoughts on this? &lt;strong&gt;Discuss&amp;#8230;&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Gary came across this amusing quote from a response by a representative at Microsoft.&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&amp;#8220;The browser landscape is highly competitive, but people will choose Internet Explorer 8 for the way it puts the services they want right at their fingertips &amp;#8230; and, more than any other browsing technology, puts them in control of their personal data on-line,&amp;#8221; Hachamovitch said. (&lt;a href="http://www.cnn.com/2008/TECH/09/01/google.browser.ap/index.html?iref=mpstoryview"&gt;read article on &lt;span class="caps"&gt;CNN&lt;/span&gt;&lt;/a&gt;)&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;I&amp;#8217;m really not sure what that even means. Don&amp;#8217;t we already have our online services &lt;em&gt;at our fingertips&lt;/em&gt;? I suspect &lt;span class="caps"&gt;CNN&lt;/span&gt; interviewed the wrong person.. because this person said nothing.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Update #2:&lt;/strong&gt; Only a PC version available&amp;#8230; &lt;span class="caps"&gt;OSX&lt;/span&gt; / Linux are in development. Oh well&amp;#8230;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=VZTqO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=VZTqO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=7OBbo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=7OBbo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=A1WgO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=A1WgO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=NKdWO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=NKdWO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/380980129" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 01 Sep 2008 21:40:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:fb75fbfe-4684-4915-8c01-047834e6cb23</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/380980129/google-chrome-discuss</link>
      <category>Programming</category>
      <category>web</category>
      <category>browsers</category>
      <category>google</category>
      <category>chrome</category>
      <category>design</category>
      <category>interaction</category>
      <category>internet</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/09/01/google-chrome-discuss</feedburner:origLink></item>
    <item>
      <title>The new RubyURL API</title>
      <description>&lt;p&gt;We&amp;#8217;ve just deployed the initial version of an &lt;a href="http://rubyurl.com/api"&gt;&lt;span class="caps"&gt;API&lt;/span&gt; for RubyURL&lt;/a&gt;. It makes it really easy to create RubyURLs and is now open to the public. Should it end up being abused, we&amp;#8217;ll consider introducing an &lt;span class="caps"&gt;API KEY&lt;/span&gt; for authenticating and tracking abuse.&lt;/p&gt;


	&lt;p&gt;In the meantime, you can now start to use the RubyURL &lt;span class="caps"&gt;API&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;For example, the following&amp;#8230;&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ curl  -i \ 
        -X POST \
        -H 'Content-Type: application/xml' \
        -d '&amp;lt;link&amp;gt;&amp;lt;website_url&amp;gt;http://github.com/robbyrussell&amp;lt;/website_url&amp;gt;&amp;lt;/link&amp;gt;' \
        http://rubyurl.com/api/links  
&lt;/code&lt;/pre&gt;

	&lt;p&gt;...would return the following response.&lt;/p&gt;


&lt;script src="http://gist.github.com/8207.js"&gt;&lt;/script&gt;

	&lt;p&gt;I&amp;#8217;ll be updating the &lt;a href="http://github.com/robbyrussell/shorturl/tree/master"&gt;ShortURL gem&lt;/a&gt; in the coming days (unless someone else wants to patch it first &lt;strong&gt;wink&lt;/strong&gt;) to take advantage of new &lt;span class="caps"&gt;API&lt;/span&gt;, versus how it&amp;#8217;s currently creating RubyURLs.&lt;/p&gt;


	&lt;p&gt;You can see the code &amp;amp; changes for this new &lt;span class="caps"&gt;API&lt;/span&gt; on the &lt;a href="http://github.com/robbyrussell/rubyurl/commits/master"&gt;RubyURL github site&lt;/a&gt;.&lt;/p&gt;


	&lt;h3&gt;Update with &lt;span class="caps"&gt;JSON&lt;/span&gt;&lt;/h3&gt;


	&lt;p&gt;I took a little time today to update the &lt;span class="caps"&gt;API&lt;/span&gt; and extend it to support &lt;span class="caps"&gt;JSON&lt;/span&gt;. So&amp;#8230; you can now use the RubyURL &lt;span class="caps"&gt;API&lt;/span&gt; to generate RubyURLs via &lt;span class="caps"&gt;JSON&lt;/span&gt;. (see &lt;a href="http://github.com/robbyrussell/rubyurl/commit/36bcd0716a0a86fdaaf352d7760653b886877f2e"&gt;commits&lt;/a&gt;)&lt;/p&gt;


&lt;script src="http://gist.github.com/8363.js"&gt;&lt;/script&gt;

	&lt;p&gt;Enjoy! If you&amp;#8217;re using RubyURL via the new &lt;span class="caps"&gt;API&lt;/span&gt;, I&amp;#8217;d love to hear about it. :-)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=CE0rO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=CE0rO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=FfIZo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=FfIZo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=HVpyO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=HVpyO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=dthwO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=dthwO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/379844517" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 31 Aug 2008 13:55:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:f47bfa0b-c16e-4e8c-ba67-1a220f158d08</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/379844517/the-new-rubyurl-api</link>
      <category>RubyURL</category>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>api</category>
      <category>REST</category>
      <category>xml</category>
      <category>rubyurl</category>
      <category>development</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/08/31/the-new-rubyurl-api</feedburner:origLink></item>
    <item>
      <title>Flash Message Conductor</title>
      <description>&lt;p&gt;Do you find yourself copying and pasting the same code from Rails application-to-application as new projects start? Our team has a handful of projects in development right now and we notice that some of these &lt;em&gt;reusable&lt;/em&gt; components tend to get out of sync when we bounce between projects. So, we&amp;#8217;re making an effort to spot these and are creating a handful of plugins so that we can keep them updated between projects. (I&amp;#8217;m sure that a lot of you do this as well)&lt;/p&gt;


	&lt;p&gt;In an effort to share some of our patterns, we&amp;#8217;ll try to release them into the wild for others to use and perhaps if you have better patterns to offer, we&amp;#8217;re always interested in improving our approach.&lt;/p&gt;


	&lt;h2&gt;Introducing Flash Message Conductor&lt;/h2&gt;


	&lt;p&gt;Over the years, our designers and developers have approached the management of flash messages several different ways. In Rails, the default way to add something to a flash message is to do something like this in your controller.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;flash&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:message&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;You have successfully signed in to your account.&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;What we began doing a while back is to create a few controller helper methods:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;add_message&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;You have successfully signed in to your account.&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
&lt;span class="ident"&gt;add_notice&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;You've Got Mail!&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
&lt;span class="ident"&gt;add_error&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Oops! Something got fucked up!&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Really, nothing too crazy here, just a pattern that our developers have preferred to managing our application&amp;#8217;s flash messages.&lt;/p&gt;


	&lt;p&gt;Okay, so now for the part of the puzzle that we aimed to make consistent across our projects. Rendering flash messages would usually result in several lines of conditionals in our application layout to check if the flash had any values assigned to it. As we worked with our &lt;span class="caps"&gt;HTML&lt;/span&gt;/CSS designers to define a consistent pattern, we moved our code into a helper for rendering flash messages.&lt;/p&gt;


	&lt;p&gt;With Flash Message Conductor, we just need to pop in the following into our application layout.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="punct"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="string"&gt; render_flash_messages %&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;If we had called &lt;code&gt;add_message&lt;/code&gt;, it&amp;#8217;d render the following:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_xml "&gt;&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;div&lt;/span&gt; &lt;span class="attribute"&gt;id&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;flash_messages&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;p&lt;/span&gt; &lt;span class="attribute"&gt;class&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;message&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;You have successfully done XYZ...&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;p&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;div&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Or, should you have called &lt;code&gt;add_error&lt;/code&gt;, it&amp;#8217;d render the following:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_xml "&gt;&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;div&lt;/span&gt; &lt;span class="attribute"&gt;id&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;flash_messages&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;p&lt;/span&gt; &lt;span class="attribute"&gt;class&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;error&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;Oops! Something went bonkers!&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;p&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;div&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;What we&amp;#8217;ve done here is defined a consistent pattern for our designers and developers to follow. We&amp;#8217;ll always have a &lt;code&gt;div&lt;/code&gt; container that will use a &lt;code&gt;p&lt;/code&gt; tag to display the flash messages with a &lt;span class="caps"&gt;CSS&lt;/span&gt; class value that maps to the type of flash message that we&amp;#8217;re displaying. This makes it easier for us to reuse the same flash message styling (and tweak if necessary), but we know that it&amp;#8217;ll produce the same &lt;span class="caps"&gt;HTML&lt;/span&gt; across our applications.&lt;/p&gt;


	&lt;h3&gt;Installing Flash Message Conductor&lt;/h3&gt;


	&lt;p&gt;Like most &lt;em&gt;modern&lt;/em&gt; Rails applications, you can install with:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
script/plugin install git://github.com/planetargon/flash-message-conductor.git
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Then all of our helper methods will be available to your application. We&amp;#8217;ve also included an example &lt;span class="caps"&gt;CSS&lt;/span&gt; file, which you&amp;#8217;ll find in the plugin directory.&lt;/p&gt;


	&lt;p&gt;Sample output:&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/wuef/flash-message-area"&gt;&lt;img src="http://img.skitch.com/20080830-n8k8ikkk3i8himuxhk7pbf8tg3.preview.jpg" alt="flash message area" /&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;Anyhow, we&amp;#8217;ve posted the plugin up on GitHub for you all to use, if you&amp;#8217;d like to adopt a similar approach. If you have any alternative patterns that has helped your team, do share and I&amp;#8217;m looking forward to sharing some more of ours in the near future.&lt;/p&gt;


	&lt;p&gt;For more information, visit the &lt;a href="http://github.com/planetargon/flash-message-conductor"&gt;Flash Message Conductor plugin&lt;/a&gt; on GitHub.&lt;/p&gt;


	&lt;p&gt;If anything, hopefully this will inspire those of you who find yourself copying/pasting artifacts from application-to-application to extract that code into it&amp;#8217;s own reusable plugin. :-)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=84BIO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=84BIO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=LY0Eo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=LY0Eo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=0QhGO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=0QhGO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=eUQMO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=eUQMO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/378427287" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 29 Aug 2008 16:35:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:95e800a7-f1a5-429b-94be-aed635f73036</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/378427287/flash-message-conductor</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>patterns</category>
      <category>pattern</category>
      <category>rubyonrails</category>
      <category>rails</category>
      <category>development</category>
      <category>html</category>
      <category>css</category>
      <category>team</category>
      <category>planetargon</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/08/29/flash-message-conductor</feedburner:origLink></item>
    <item>
      <title>Git: Push it! (real good)</title>
      <description>&lt;p&gt;After wrestling with some git-remote-branching-merge-problems&amp;#8230; I remembered this song&amp;#8230;&lt;/p&gt;


&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/BCV5yGKWjv4&amp;#38;hl=en&amp;#38;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/BCV5yGKWjv4&amp;#38;hl=en&amp;#38;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;

	&lt;p&gt;If you&amp;#8217;re using git, you might add this to your &lt;code&gt;[alias]&lt;/code&gt; section in &lt;code&gt;.gitconfig&lt;/code&gt;.&lt;/p&gt;


	&lt;p&gt;(notice the &lt;code&gt;up-on-this&lt;/code&gt; alias)&lt;/p&gt;


&lt;script src="http://gist.github.com/8076.js"&gt;&lt;/script&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=vOuJO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=vOuJO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=pFp3o"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=pFp3o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=5eQbO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=5eQbO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=vVcHO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=vVcHO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/378396822" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 29 Aug 2008 13:23:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:42e811b4-d61b-4c43-8500-a792c9780c8e</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/378396822/git-push-it-real-good</link>
      <category>git</category>
      <category>video</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/08/29/git-push-it-real-good</feedburner:origLink></item>
    <item>
      <title>RSpec: It Should Behave Like</title>
      <description>&lt;p&gt;I was going through an older project of ours and cleaning up some specs and noticed how often we were doing the same thing in several places. When we started the project, we didn&amp;#8217;t get the benefits of shared groups. Now that we have some time to go through and update some of our older specs, I&amp;#8217;ve been trying to take advantage of the features currently available in &lt;a href="http://rspec.info/"&gt;RSpec&lt;/a&gt;. One feature that I haven&amp;#8217;t seen a lot of mention of by people is shared groups, so I thought I&amp;#8217;d take a few minutes to write up a quick intro to using it.&lt;/p&gt;


	&lt;p&gt;To pick some low-hanging fruit, let&amp;#8217;s take an all-too-familiar method, which you might be familiar with&amp;#8230; &lt;code&gt;login_required&lt;/code&gt;. Sound familiar? Have you found yourself &lt;em&gt;stubbing&lt;/em&gt; &lt;code&gt;login_required&lt;/code&gt; over and over throughout your specs?&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;describe&lt;/span&gt; &lt;span class="constant"&gt;Admin&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;DohickiesController&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;index&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;

  &lt;span class="ident"&gt;before&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="symbol"&gt;:each&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
    &lt;span class="ident"&gt;controller&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;stub!&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="symbol"&gt;:login_required&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="constant"&gt;Dohicky&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;should_receive&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="symbol"&gt;:paginate&lt;/span&gt; &lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;and_return&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="constant"&gt;Array&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="ident"&gt;get&lt;/span&gt; &lt;span class="symbol"&gt;:index&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;

 &lt;span class="punct"&gt;...&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;If you&amp;#8217;re requiring that a user should be logged in when interacting with most of the application (as in the case of an administration section/namespace), you might want to consolidate some of your work into one shared specification group. The basic premise behind this is that you can write a typical &lt;code&gt;describe&lt;/code&gt; block and load it into any other spec groups that you need. For example, in our case, we&amp;#8217;ll need to stub &lt;code&gt;login_required&lt;/code&gt; in several places. We can set this up in one shared group and reference it wherever necessary.&lt;/p&gt;


	&lt;p&gt;For example, here is what we&amp;#8217;ll start off with.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;describe&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;an admin user is signed in&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
  &lt;span class="ident"&gt;before&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="symbol"&gt;:each&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
    &lt;span class="ident"&gt;controller&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;stub!&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="symbol"&gt;:login_required&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="ident"&gt;describe&lt;/span&gt; &lt;span class="constant"&gt;Admin&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;DohickiesController&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;index&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
  &lt;span class="punct"&gt;...&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;However, the new describe block isn&amp;#8217;t accessible from the block at the bottom of the example&amp;#8230; yet. To do this, we just need to pass the option: &lt;code&gt;:shared =&amp;gt; true&lt;/code&gt; as you&amp;#8217;ll see in the following example.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;describe&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;an admin user is signed in&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="symbol"&gt;:shared&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="constant"&gt;true&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
  &lt;span class="ident"&gt;before&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="symbol"&gt;:each&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
    &lt;span class="ident"&gt;controller&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;stub!&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="symbol"&gt;:login_required&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Great, now we can reference it by referring to it with: &lt;code&gt;it_should_behave_like SharedGroupName&lt;/code&gt;. In our example above, this would look like:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;describe&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;an admin user is signed in&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
  &lt;span class="ident"&gt;before&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="symbol"&gt;:each&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
    &lt;span class="ident"&gt;controller&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;stub!&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="symbol"&gt;:login_required&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="ident"&gt;describe&lt;/span&gt; &lt;span class="constant"&gt;Admin&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;DohickiesController&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;index&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
  &lt;span class="ident"&gt;it_should_behave_like&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;an admin user is signed in&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;

  &lt;span class="ident"&gt;before&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="symbol"&gt;:each&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
    &lt;span class="constant"&gt;Dohicky&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;should_receive&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="symbol"&gt;:paginate&lt;/span&gt; &lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;and_return&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="constant"&gt;Array&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="ident"&gt;get&lt;/span&gt; &lt;span class="symbol"&gt;:index&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;

 &lt;span class="punct"&gt;...&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="ident"&gt;describe&lt;/span&gt; &lt;span class="constant"&gt;Admin&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;DohickiesController&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;new&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
  &lt;span class="ident"&gt;it_should_behave_like&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;an admin user is signed in&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;

  &lt;span class="ident"&gt;before&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="symbol"&gt;:each&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
    &lt;span class="attribute"&gt;@dohicky&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;mock_model&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="constant"&gt;Dohicky&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="constant"&gt;Dohicky&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;should_receive&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="symbol"&gt;:new&lt;/span&gt; &lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;and_return&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt; &lt;span class="attribute"&gt;@dohicky&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;get&lt;/span&gt; &lt;span class="symbol"&gt;:new&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;

  &lt;span class="punct"&gt;...&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;That&amp;#8217;s it! Pretty simple, eh? We can now reference this shared group in any describe blocks that we want to. A benefit to this approach is that we can make change the authentication system (say, we decide to switch it entirely and/or even just change method names, set any other prerequisites necessary when an admin is signed in), we&amp;#8217;ll have a single place to change in our specs. (&lt;strong&gt;tip:&lt;/strong&gt; you can put these in your &lt;code&gt;spec_helper&lt;/code&gt; file)&lt;/p&gt;


	&lt;p&gt;You can learn more about &lt;code&gt;it_should_behave_like&lt;/code&gt; and other helpful features on the &lt;a href="http://rspec.info/documentation/"&gt;RSpec documentation site&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;If you have any suggestions on better ways of handling things like this, please follow up and share your solutions. I&amp;#8217;m always looking to sharpen my tools. :-)&lt;/p&gt;


	&lt;h3&gt;Update&lt;/h3&gt;


	&lt;p&gt;In response, &lt;a href="http://brynary.com/"&gt;Bryan Helmkamp&lt;/a&gt; suggests that a better solution is to define a method in our specs like, for example: &lt;code&gt;build_mock_user_and_login&lt;/code&gt;. then calling it in our &lt;code&gt;before(:each)&lt;/code&gt;. So, maybe the approach above isn&amp;#8217;t the most ideal method but I did wantt o draw some attention to &lt;code&gt;it_should_behave_like&lt;/code&gt;. I suppose that I need a better example.. another post, perhaps? :-)&lt;/p&gt;


	&lt;p&gt;Also, Ed Spencer has posted an article titled, &lt;a href="http://edspencer.net/2008/08/drying-up-your-crud-controller-rspecs.html"&gt;DRYing up your &lt;span class="caps"&gt;CRUD&lt;/span&gt; controller RSpecs&lt;/a&gt;, which will introduce you mor to &lt;code&gt;it_should_behave_like&lt;/code&gt;.&lt;/p&gt;


	&lt;p&gt;Thanks for feedback people!&lt;/p&gt;


	&lt;h3&gt;Related Posts&lt;/h3&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/02/13/be-careful-that-you-dont-stub-your-big-toe"&gt;Be Careful that you don&amp;#8217;t Stub your Big Toe&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/08/02/spec-your-views"&gt;Spec Your Views&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=crSLO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=crSLO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=xUAIo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=xUAIo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=yojlO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=yojlO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=Apg1O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=Apg1O" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/369590704" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 19 Aug 2008 21:47:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:769c7a25-afa3-40aa-aeb4-98c2ac61115a</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/369590704/rspec-it-should-behave-like</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>development</category>
      <category>rspec</category>
      <category>controllers</category>
      <category>rubyonrails</category>
      <category>rails</category>
      <category>agile</category>
      <category>tutorial</category>
      <category>specs</category>
      <category>code</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/08/19/rspec-it-should-behave-like</feedburner:origLink></item>
    <item>
      <title>Things.app syncs with the iPhone!</title>
      <description>&lt;p&gt;Awesome. Things 1.1 for the iPhone was just pushed to the Apple iTunes Store, which means&amp;#8230; I can finally sync my Things.app with my iPhone!&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3295/2777286114_ef48812b92.jpg?v=0" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve been using Things for quite a while to manage my life (work and personal) and bringing this to my phone definitely makes my day.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://img.skitch.com/20080819-1cn9cjpu769hnctma7ewcr2429.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;For more information about Things, visit the following sites:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://culturedcode.com/things/"&gt;http://culturedcode.com/things/&lt;/a&gt; (Things for &lt;span class="caps"&gt;OSX&lt;/span&gt;)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284971781&amp;#38;mt=8"&gt;Things&lt;/a&gt; (iPhone)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;I&amp;#8217;ll post a review in the coming days as I get a chance to play with it. Just wanted to share the news. :-)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=YuW3O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=YuW3O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=RZODo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=RZODo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=p5CtO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=p5CtO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=jxk8O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=jxk8O" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/368704610" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 18 Aug 2008 23:18:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:3fb63dc6-4a04-4075-8084-b78cb076cbc4</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/368704610/things-app-syncs-with-the-iphone</link>
      <category>gtd</category>
      <category>things</category>
      <category>iphone</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/08/18/things-app-syncs-with-the-iphone</feedburner:origLink></item>
    <item>
      <title>Alan Cooper @ Agile2008 slides</title>
      <description>&lt;p&gt;Alan Cooper, author of &lt;a href="http://www.amazon.com/About-Face-Essentials-Interface-Design/dp/1568843224"&gt;About Face&lt;/a&gt;, has slides from his presentation at Agile 2008 online.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.cooper.com/journal/agile2008/"&gt;The Wisdom of Experience&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;If anybody knows if there is video of this talk, please let me know. :-)&lt;/p&gt;


	&lt;p&gt;Here are a few skitches from the slideshow.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/ug8u/the-wisdom-of-experience"&gt;&lt;img src="http://img.skitch.com/20080812-r9hyg3xrncidmpm691s3aemrxw.preview.jpg" alt="The Wisdom of Experience" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/ugej/the-wisdom-of-experience"&gt;&lt;img src="http://img.skitch.com/20080812-f18sjsi46bpx1uibn2k7jpw1ty.preview.jpg" alt="The Wisdom of Experience" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/ugep/the-wisdom-of-experience"&gt;&lt;img src="http://img.skitch.com/20080812-8bn4q9jgx64nyry16wgtmt91qg.preview.jpg" alt="The Wisdom of Experience" /&gt;&lt;/div&gt;

&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/uges/the-wisdom-of-experience"&gt;&lt;img src="http://img.skitch.com/20080812-be1c52sxr11drrqy6xdtaf3f49.preview.jpg" alt="The Wisdom of Experience" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/ugei/the-wisdom-of-experience"&gt;&lt;img src="http://img.skitch.com/20080812-jcummuw488b67xim7i23b3n1at.preview.jpg" alt="The Wisdom of Experience" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=la16O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=la16O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=aIpEo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=aIpEo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=DZzrO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=DZzrO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=En6bO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=En6bO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/363365915" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 12 Aug 2008 18:19:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:969a9ba9-28c4-46e3-b060-6e86e6e54528</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/363365915/alan-cooper-agile2008-slides</link>
      <category>Programming</category>
      <category>d3</category>
      <category>agile</category>
      <category>development</category>
      <category>ui</category>
      <category>IxD</category>
      <category>interactiondesign</category>
      <category>alancooper</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/08/12/alan-cooper-agile2008-slides</feedburner:origLink></item>
    <item>
      <title>Expanding Rails Boxcar packages</title>
      <description>&lt;p&gt;If you&amp;#8217;re in the market for a new hosting provider for your Ruby on Rails application, you might take a look at the new options for &lt;a href="http://railsboxcar.com/"&gt;Rails Boxcar.&lt;/a&gt; We recently expanded our service offerings into three pricing tiers as well as custom packages for those who need a bit more.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.railsboxcar.com/img/boxcar_logo_wide.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;A few things that we&amp;#8217;ve recently added support for:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Provide us your &lt;span class="caps"&gt;SSH&lt;/span&gt; key during sign up!
	&lt;ul&gt;
	&lt;li&gt;Allows us to keep your server even more secure by avoiding sending passwords over the net&lt;/li&gt;
		&lt;li&gt;Other fun features related to this coming soon&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
		&lt;li&gt;Auto-configured Nginx w/Mongrel cluster&lt;/li&gt;
		&lt;li&gt;Phusion Passenger (&lt;strong&gt;mod_rails&lt;/strong&gt;) support! (for those with mixed-environments)&lt;/li&gt;
		&lt;li&gt;Continued development of &lt;a href="http://github.com/planetargon/boxcar-conductor/tree/master"&gt;Boxcar Conductor&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;...more in the works!&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;The best part is that we can get you up and running with a new Boxcar now for as low as $59/month &lt;span class="caps"&gt;USD&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;For more information, visit: &lt;a href="http://railsboxcar.com"&gt;http://railsboxcar.com&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;If you have any questions, don&amp;#8217;t hesitate to &lt;a href="mailto:contact@planetargon.com?subject=Boxcar"&gt;contact us&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=0NmPO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=0NmPO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=HOkfo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=HOkfo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=PAOAO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=PAOAO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=plNKO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=plNKO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/355419953" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 04 Aug 2008 09:30:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:f8d2d740-aad7-4c44-9465-53b9767e4df7</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/355419953/expanding-rails-boxcar-packages</link>
      <category>Business</category>
      <category>Ruby on Rails</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>boxcar</category>
      <category>hosting</category>
      <category>rails</category>
      <category>plugin</category>
      <category>vps</category>
      <category>capistrano</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/08/04/expanding-rails-boxcar-packages</feedburner:origLink></item>
    <item>
      <title>Pair Programming and Micro Projects</title>
      <description>&lt;p&gt;It&amp;#8217;s been quiet because I&amp;#8217;ve been busy over the past few months. Projects, vacations, and pair programming with our new developer, Nigel. ;-)&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/2674833047/" title="Pair programming by Robby Russell, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3170/2674833047_f2a5629d55.jpg" width="500" height="333" alt="Pair programming" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;In other news, &lt;a href="http://chriszgriffin.com/"&gt;Chris&lt;/a&gt; and I launched &lt;a href="http://ohmyscience.org"&gt;http://ohmyscience.org&lt;/a&gt; (on &lt;a href="http://twitter.com/ohmyscience"&gt;twitter&lt;/a&gt;) in an effort to get a small one-night micro-project out the door.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://ohmyscience.org"&gt;&lt;img src="http://img.skitch.com/20080801-jpingqyemnki6wx2bj184m741c.preview.jpg" alt="Oh My Science 2014 replacing god with reason... one tweet at a time" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;I have a growing list of a few micro-projects that I hope to be helping get developed and launched before the summer is over. Stay tuned!&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/1ejk/oh-my-science-replacing-god-with-reason-one-tweet-at-a-time"&gt;&lt;img src="http://img.skitch.com/20080801-tp16crbhpr6axdtfpf3en9ca7y.preview.jpg" alt="Oh My Science 2014 replacing god with reason... one tweet at a time" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;I hope that you&amp;#8217;re all enjoying your summer!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=S8z5O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=S8z5O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=BENWo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=BENWo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=2EQsO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=2EQsO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=clOlO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=clOlO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/352196095" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 31 Jul 2008 21:55:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:dd05c1e6-1409-4744-aa2e-c3d5096436b7</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/352196095/pair-programming-and-micro-projects</link>
      <category>projects</category>
      <category>agile</category>
      <category>dog</category>
      <category>nigel</category>
      <category>ohmyscience</category>
      <category>chrisgriffin</category>
      <category>science</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/07/31/pair-programming-and-micro-projects</feedburner:origLink></item>
    <item>
      <title>ShortURL on Github</title>
      <description>&lt;p&gt;After noticing a few patch requests on Rubyforge.. I decided that I&amp;#8217;d put the ShortURL gem up on GitHub as I spend quite a bit of my time there these days. :-)&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://github.com/robbyrussell/shorturl/tree"&gt;http://github.com/robbyrussell/shorturl/tree&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;I&amp;#8217;ve also thrown up a &lt;a href="http://gist.github.com/2186"&gt;few lines of code&lt;/a&gt; so that you can get the &lt;em&gt;gist&lt;/em&gt; of the gem. ;-)&lt;/p&gt;


&lt;script src="http://gist.github.com/2186.js"&gt;&lt;/script&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=s2EXO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=s2EXO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=QVBUo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=QVBUo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=QnVGO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=QnVGO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=g7xQO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=g7xQO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/352196096" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 24 Jul 2008 10:56:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ae5b1e3e-e539-4451-8224-dec14d560e09</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/352196096/shorturl-on-github</link>
      <category>rubyurl</category>
      <category>shorturl</category>
      <category>gem</category>
      <category>git</category>
      <category>github</category>
      <category>gist</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/07/24/shorturl-on-github</feedburner:origLink></item>
    <item>
      <title>Ruby 1.8.7 on MacPorts causing some problems</title>
      <description>&lt;p&gt;It appears that MacPorts has upgraded to Ruby 1.8.7, which is good news if you&amp;#8217;re running Rails 2.1&amp;#8230; but if you have an older Rails application&amp;#8230; it&amp;#8217;s not going to work too well.&lt;/p&gt;


	&lt;p&gt;In order to get Ruby 1.8.6 installed with the latest MacPorts, you&amp;#8217;ll need to do the following.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  $ mkdir /Users/Shared/dports
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;
$ svn checkout -r 36429 \ 
    http://svn.macports.org/repository/macports/trunk/dports/lang/ruby/ \ 
    /Users/Shared/dports/lang/ruby/
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Then you&amp;#8217;ll need to modify your macports to use this new local source. You&amp;#8217;ll need to edit &lt;code&gt;/opt/local/etc/macports/sources.conf&lt;/code&gt;  and add the following line above the existing rsync record.&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;file:///Users/Shared/dports and create that directory&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;Next, you&amp;#8217;ll want to index this new local source with the following command:&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;portindex /Users/Shared/dports&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;After that, you can do the following.&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;sudo port uninstall rb-rubygems ruby&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;sudo port clean rb-rubygems ruby&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;sudo rm -r /opt/local/lib/ruby/gems/1.8/doc/rubygems-1.1.1/&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;sudo port deactivate autoconf&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;sudo port install ruby rb-rubygems&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;..and hopefully you&amp;#8217;ll have Ruby 1.8.6 installed and be able to retain the rubygems you installed already.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=umF6O"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=umF6O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=viNSo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=viNSo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=QikwO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=QikwO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=QhtkO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=QhtkO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/352196097" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 20 Jun 2008 16:11:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:d949213f-ee18-44ed-a39f-a644f33289ca</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/352196097/ruby-1-8-7-on-macports-causing-some-problems</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>macports</category>
      <category>ruby</category>
      <category>rubygems</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/06/20/ruby-1-8-7-on-macports-causing-some-problems</feedburner:origLink></item>
    <item>
      <title>Basecamp...</title>
      <description>&lt;p&gt;Kudos to the 37signals team for launching what looks like a nice way to get the word out about their products.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve been using Basecamp for three years and it&amp;#8217;s been a great tool for collaborating with our clients.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.basecampHQ.com?referrer=ROBBYRUSSELL"&gt;&lt;img alt="Basecamp" border="0" height="250" src="https://affiliate.37signals.com/images/products/basecamp/banner-300x250.png" width="300" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Disclaimer: This is my get-rich-quick scheme for the day.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=z24EO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=z24EO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=FxHoo"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=FxHoo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=6VkYO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=6VkYO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=OG2rO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=OG2rO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/352196098" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 04 Jun 2008 12:13:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:56c1393e-7174-428c-9fc1-04cb3bac8f5c</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/352196098/basecamp</link>
      <category>37signals</category>
      <category>basecamp</category>
      <category>projects</category>
      <category>agile</category>
      <category>team</category>
      <category>collaborate</category>
      <category>dialogue</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/06/04/basecamp</feedburner:origLink></item>
    <item>
      <title>New Boxcar plans announced!</title>
      <description>&lt;p&gt;Yesterday we announced our new suite of plans for Rails Boxcar. You can now get started with a pre-configured &lt;span class="caps"&gt;VPS&lt;/span&gt; designed by Rails developers like you for as low as $59/month.&lt;/p&gt;


	&lt;p&gt;You can check out our new rates here:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://railsboxcar.com"&gt;http://railsboxcar.com&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;If you&amp;#8217;re at RailsConf, be sure to introduce yourself and ask for details. :-)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=gnYHO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=gnYHO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=kWDto"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=kWDto" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=68rYO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=68rYO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/RobbyOnRails?a=bNmpO"&gt;&lt;img src="http://feeds.feedburner.com/~f/RobbyOnRails?i=bNmpO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RobbyOnRails/~4/352196099" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 30 May 2008 14:30:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:09b31bcf-a1b8-4699-b262-13cbc23ae63f</guid>
      <author>Robby Russell</author>
      <link>http://feeds.feedburner.com/~r/RobbyOnRails/~3/352196099/new-boxcar-plans-announced</link>
      <category>Ruby on Rails</category>
      <category>PLANET ARGON</category>
      <category>hosting</category>
      <category>rails</category>
      <category>vps</category>
      <category>boxcar</category>
      <category>planetargon</category>
    <feedburner:origLink>http://www.robbyonrails.com/articles/2008/05/30/new-boxcar-plans-announced</feedburner:origLink></item>
    <item>
      <title>Meet us at RailsConf</title>
      <description>&lt;p&gt;If you&amp;#8217;re coming to Portland for RailsConf or CabooseConf, be sure to introduce yourself (and we&amp;#8217;ll try to do the same). A few of us from &lt;a href="http://planetargon.com"&gt;Planet Argon&lt;/a&gt; will be attending the conference. I thought that I&amp;#8217;d make it easy to spot us by putting some faces to our names.&lt;/p&gt;


	&lt;p&gt;In corner #1 we have &lt;strong&gt;Alex Malinovich&lt;/strong&gt; who is our Director of Deployment Services. If you have any questions about hosting options, deployment tips, and scaling your Ruby on Rails application.. be sure to tug on his shoulder. I also overheard that he&amp;#8217;ll be giving people discounts on our Boxcar products to those he meets in person.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/2419611753/" title="Alex by Robby Russell, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2236/2419611753_d829f271d1.jpg" width="500" height="333" alt="Alex" /&gt;&lt;/