<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Light Year Software &#187; Ruby &amp; Rails</title>
	<atom:link href="http://lightyearsoftware.com/tag/ruby-rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://lightyearsoftware.com</link>
	<description></description>
	<lastBuildDate>Thu, 10 May 2012 13:56:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>RubyMotion</title>
		<link>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2012%2F05%2Frubymotion%2F&#038;seed_title=RubyMotion</link>
		<comments>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2012%2F05%2Frubymotion%2F&#038;seed_title=RubyMotion#comments</comments>
		<pubDate>Fri, 04 May 2012 18:25:24 +0000</pubDate>
		<dc:creator>Steve Madsen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Ruby & Rails]]></category>

		<guid isPermaLink="false">http://lightyearsoftware.com/?p=977</guid>
		<description><![CDATA[Yesterday, Laurent Sansonetti announced RubyMotion, the first product from his new company, HipByte. Laurent is the creator of MacRuby and worked on it part-time while an employee at Apple. RubyMotion is interesting, but I don&#8217;t have any plans to use it myself, especially for client work. There are two reasons. The first is from a [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, Laurent Sansonetti announced <a href="http://www.rubymotion.com/">RubyMotion</a>, the first product from his new company, HipByte. Laurent is the creator of MacRuby and worked on it part-time while an employee at Apple.</p>
<p>RubyMotion is interesting, but I don&#8217;t have any plans to use it myself, especially for client work. There are two reasons.<span id="more-977"></span></p>
<p>The first is from a business standpoint. I learned long ago to put aside my own opinions of how things should be done whenever possible and to swim with the current. This applies to managing servers (use the package manager and avoid installing your own software) and developing software (understand the intention of the API&#8217;s author and use it accordingly).</p>
<p>Apple ships a lot of open-source software with OS X, but they aren&#8217;t great about keeping up with releases. Nor are they good at supporting alternative ways to write software on their platforms. Remember Java, RubyCocoa, and PyObjC? This is even true, to some extent, of MacRuby. Apple paid Laurent to work on MacRuby, yet MacRuby never shipped with an OS X release. If you want to use MacRuby in a shipping application, you either require your users to install it (terrible UX) or embed it yourself (at a cost of 10+ MB to your app bundle).</p>
<p>Lion shipped on July 20, 2011. It includes Ruby 1.8.7-p249. 1.8.7 has been in maintenance mode for a long time and Apple has ignored numerous patches.</p>
<ul>
<li>p299, released on June 23, 2010, <em>over a year</em> before Lion</li>
<li>p302, released on August 16, 2010</li>
<li>p330, released on December 25, 2010</li>
<li>p352, released on July 2, 2011</li>
</ul>
<p>The Ruby core team has encouraged people to move to 1.9 since the official release of 1.9.2-p0 on August 18, 2010. There are no signs that Apple will move the system Ruby to the 1.9 series in the upcoming Mountain Lion release, either, <em>nearly two years later</em>.</p>
<p>I&#8217;m offering all this as a long-winded way to say that I do not put much faith in Apple&#8217;s desire to avoid breaking a third-party toolchain such as RubyMotion when they can&#8217;t be bothered to do a good job supporting the Ruby they ship on OS X. It&#8217;s less troublesome, but still an issue, that they never shipped the MacRuby framework, which they paid an employee to work on.</p>
<p>If Apple were to break RubyMotion, intentionally or otherwise, in a future iOS release, I would be unable to fix those apps until RubyMotion adapted to the change, however long that took. In the meantime, the apps would be broken, making users unhappy. If the apps were for clients, my choice of a third-party toolchain will reflect very badly on me, as well.</p>
<p>Objective-C is how Apple wants developers to build apps for iOS. Choosing something else means swimming against the current and invites trouble later. At the very least, the pool of available talent is massively reduced. This puts my clients in a bad place if they can&#8217;t or won&#8217;t come back to me for updates.</p>
<p>My second concern is about programmer productivity. Xcode takes a lot of abuse, and Xcode 4 has been somewhat of a step back, but it&#8217;s still a pretty good IDE. I may in the minority, but I really like the wordiness of the Cocoa APIs and the way that Objective-C&#8217;s mixes arguments into the middle of method names. For any method that takes more than two arguments, this naming style saves me from needing to remember things. Xcode&#8217;s code completion is crucial to this, though. When it stops working, writing to the Cocoa APIs is painful.</p>
<p>One of RubyMotion&#8217;s selling points is that I get to use my preferred editor. Does any text editor offer intelligent code completion for classes from both frameworks and my own source files, without a manual indexing step? If not (and I doubt it, since it&#8217;s a big job), then I&#8217;m back to having to remember things, and a lot more than just the order of method arguments.</p>
<p>RubyMotion also throws Interface Builder out. The promise is that you&#8217;ll build interfaces in code, using an ASCII art style similar to Cocoa Autolayout. I don&#8217;t see this as anything other than an admission that RubyMotion <em>can&#8217;t</em> work with IB. It is a huge weakness, perhaps worse than the code completion problem.</p>
<p>RubyMotion is an interesting idea, but I won&#8217;t consider it for anything more than prototyping in the near term.</p>
<p><strong>Update:</strong> Ian Phillips demonstrates that <a href="http://ianp.org/2012/05/07/rubymotion-and-interface-builder/">it is possible to use Interface Builder</a>, but very minimally. You can lay out the interface, but that&#8217;s it. No outlets, no actions and no storyboards (which are great, if you haven&#8217;t tried them yet). A big part of what makes the Cocoa + IB combination so wonderful is that we can freeze dry a set of objects that make up an interface and later recreate them, with all their connections intact. This work must still be done in code with RubyMotion, which is ugly. Until RubyMotion can support NIBs 100%, it might be better not to use them at all.</p>
]]></content:encoded>
			<wfw:commentRss>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2012%2F05%2Frubymotion%2F&#038;seed_title=RubyMotion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sold on Homebrew</title>
		<link>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2012%2F02%2Fsold-on-homebrew%2F&#038;seed_title=Sold+on+Homebrew</link>
		<comments>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2012%2F02%2Fsold-on-homebrew%2F&#038;seed_title=Sold+on+Homebrew#comments</comments>
		<pubDate>Fri, 03 Feb 2012 22:19:00 +0000</pubDate>
		<dc:creator>Steve Madsen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Ruby & Rails]]></category>

		<guid isPermaLink="false">http://lightyearsoftware.com/?p=827</guid>
		<description><![CDATA[I&#8217;ve been a MacPorts user for a very long time, so when I heard about Homebrew, I looked into it, but didn&#8217;t see anything compelling enough to convince me to switch. That changed today. I&#8217;m starting a new Rails project. I want to use Ruby 1.9.3 from the beginning to ease a future upgrade to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a <a href="http://www.macports.org/">MacPorts</a> user for a very long time, so when I heard about <a href="http://mxcl.github.com/homebrew/">Homebrew</a>, I looked into it, but didn&#8217;t see anything compelling enough to convince me to switch. That changed today.<span id="more-827"></span></p>
<p>I&#8217;m starting a new Rails project. I want to use Ruby 1.9.3 from the beginning to ease a future upgrade to Rails 4.0, which will require it. This presented a few issues I had to work through for my development and production environments.</p>
<p>Mac OS X ships with Ruby 1.8.7, but I&#8217;ve been using <a href="https://rvm.beginrescueend.com/">RVM</a> to manage different Ruby versions in development and it&#8217;s worked fine. Debian is my preferred server distribution and the latest stable release includes Ruby 1.9.2-p0.</p>
<p>I&#8217;m not completely comfortable with using RVM in a production environment, and I don&#8217;t want to take on the work of installing my own Ruby entirely by hand, so this led me to look at <a href="https://github.com/sstephenson/rbenv">rbenv</a>, a lightweight alternative to RVM. It seems better suited for use in a production environment. I like to match development to production when possible so there are less things to remember, and so I switched to rbenv on my development machine, as well. Paired with <a href="https://github.com/sstephenson/ruby-build">ruby-build</a>, it gives me the important features I used from RVM (I never made much use of gem sets).</p>
<p>It did not go well.</p>
<pre>
$ rbenv install 1.9.3-p0
$ RBENV_VERSION=1.9.3-p0 gem install bundler rails
$ rbenv rehash
$ RBENV_VERSION=1.9.3-p0 rails new app
...
/Volumes/User/Steve/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/net/http.rb:799: [BUG] Segmentation fault
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.3.0]
</pre>
<p>Searching for solutions led me to suspect that this is due to a library version mismatch between the compiled Ruby and a gem. MacPorts can make this more common, because unlike Homebrew, it imposes strict control over dependencies and will install a new version of something (e.g., OpenSSL) even if Mac OS X ships with an older one that would work fine.</p>
<p>Rather than track down the problem library, then figure out how to ask rbenv to link with a different version of it, I decided to try Homebrew.</p>
<p>It worked flawlessly. The error when creating a new Rails project is gone.</p>
<p>What really sealed the deal for me came next. I like PostgreSQL, partly because it supports additional data types that can be very useful. One example is <tt>cube</tt>, which is used by the earthdistance extension to store locations and do fast proximity searches. On MacPorts, installing those &#8220;contrib&#8221; extensions is a <a href="http://lightyearsoftware.com/2010/08/adding-contrib-extensions-to-macports-postgresql/" title="Adding “contrib” Extensions to MacPorts PostgreSQL">manual, clunky process</a>. On Homebrew, all the contrib extensions are already compiled and available.</p>
<p>Sold.</p>
]]></content:encoded>
			<wfw:commentRss>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2012%2F02%2Fsold-on-homebrew%2F&#038;seed_title=Sold+on+Homebrew/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bundler 1.1 Prerelease is Worth It</title>
		<link>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2012%2F01%2Fbundler-1-1-prerelease-is-worth-it%2F&#038;seed_title=Bundler+1.1+Prerelease+is+Worth+It</link>
		<comments>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2012%2F01%2Fbundler-1-1-prerelease-is-worth-it%2F&#038;seed_title=Bundler+1.1+Prerelease+is+Worth+It#comments</comments>
		<pubDate>Fri, 20 Jan 2012 17:03:28 +0000</pubDate>
		<dc:creator>Steve Madsen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Ruby & Rails]]></category>

		<guid isPermaLink="false">http://lightyearsoftware.com/?p=820</guid>
		<description><![CDATA[In two posts from last year, Pat Shaughnessy discusses why Bundler 1.1 will be much faster and how to use some of the new features. Ordinarily, I avoid prerelease gems because I don&#8217;t want to risk the stability of an application. My release schedule won&#8217;t often align with a gem&#8217;s, assuming there is one. I [...]]]></description>
			<content:encoded><![CDATA[<p>In two posts from last year, Pat Shaughnessy discusses why Bundler 1.1 will be <a href="http://patshaughnessy.net/2011/10/14/why-bundler-1-1-will-be-much-faster">much faster</a> and how to use some of the <a href="http://patshaughnessy.net/2011/11/5/besides-being-faster-what-else-is-new-in-bundler-1-1">new features</a>. Ordinarily, I avoid prerelease gems because I don&#8217;t want to risk the stability of an application. My release schedule won&#8217;t often align with a gem&#8217;s, assuming there is one.<span id="more-820"></span></p>
<p>I finally realized today that this doesn&#8217;t matter. Unlike the rest of the gems your Rails application uses, Bundler lives above the fray. It is perfectly safe to use a prerelease version of Bundler on your development machine and stick to the stable release on your production servers.</p>
<p>I encourage you to give it a try. <tt>bundle install</tt> imposes practically no overhead over the actual gem installation time, and <tt>bundle outdated</tt> is tremendously useful when planning for gem updates.</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">$ gem install bundler --pre</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2012%2F01%2Fbundler-1-1-prerelease-is-worth-it%2F&#038;seed_title=Bundler+1.1+Prerelease+is+Worth+It/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;I heard you liked files&#8221;</title>
		<link>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2011%2F12%2Fi-heard-you-liked-files%2F&#038;seed_title=%26%238220%3BI+heard+you+liked+files%26%238221%3B</link>
		<comments>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2011%2F12%2Fi-heard-you-liked-files%2F&#038;seed_title=%26%238220%3BI+heard+you+liked+files%26%238221%3B#comments</comments>
		<pubDate>Fri, 02 Dec 2011 15:19:48 +0000</pubDate>
		<dc:creator>Steve Madsen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Ruby & Rails]]></category>

		<guid isPermaLink="false">http://lightyearsoftware.com/?p=768</guid>
		<description><![CDATA[Josh Susser on the proliferation of lazily-named configuration files: Just because your configuration file&#8217;s contents are written in a DSL does not mean you should pretend it&#8217;s not Ruby anymore. The worst offenders are those that name these files without a reference to the thing that uses them. Bundler&#8216;s &#8220;Gemfile&#8221; and Foreman&#8216;s &#8220;Procfile&#8221; are two [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.hasmanythrough.com/2011/12/1/i-heard-you-liked-files" title="I heard you liked files">Josh Susser on the proliferation of lazily-named configuration files</a>:</p>
<blockquote><p>
Just because your configuration file&#8217;s contents are written in a DSL does not mean you should pretend it&#8217;s not Ruby anymore.
</p></blockquote>
<p><span id="more-768"></span></p>
<p>The worst offenders are those that name these files without a reference to the thing that uses them. <a href="http://gembundler.com/" title="Bundler">Bundler</a>&#8216;s &#8220;Gemfile&#8221; and <a href="http://blog.daviddollar.org/2011/05/06/introducing-foreman.html" title="Foreman">Foreman</a>&#8216;s &#8220;Procfile&#8221; are two examples.</p>
]]></content:encoded>
			<wfw:commentRss>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2011%2F12%2Fi-heard-you-liked-files%2F&#038;seed_title=%26%238220%3BI+heard+you+liked+files%26%238221%3B/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unit Testing Cocoa with MacRuby</title>
		<link>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2011%2F09%2Funit-testing-cocoa-with-macruby%2F&#038;seed_title=Unit+Testing+Cocoa+with+MacRuby</link>
		<comments>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2011%2F09%2Funit-testing-cocoa-with-macruby%2F&#038;seed_title=Unit+Testing+Cocoa+with+MacRuby#comments</comments>
		<pubDate>Thu, 29 Sep 2011 15:43:05 +0000</pubDate>
		<dc:creator>Steve Madsen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[RSpec]]></category>
		<category><![CDATA[Ruby & Rails]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://lightyearsoftware.com/?p=727</guid>
		<description><![CDATA[I spend most of my development time split between Rails and iOS. Each offers a rich API that makes building projects much more productive and enjoyable. There is one place, however, that Ruby clobbers Objective-C: testing. It&#8217;s not that Objective-C doesn&#8217;t have test frameworks. There are several: OCUnit (bundled with Xcode), GHUnit, Cedar and Kiwi. [...]]]></description>
			<content:encoded><![CDATA[<p>I spend most of my development time split between Rails and iOS. Each offers a rich API that makes building projects much more productive and enjoyable. There is one place, however, that Ruby clobbers Objective-C: testing.<span id="more-727"></span></p>
<p>It&#8217;s not that Objective-C doesn&#8217;t have test frameworks. There are several: <a href="http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/135-Unit_Testing_Applications/unit_testing_applications.html">OCUnit</a> (bundled with Xcode), <a href="https://github.com/gabriel/gh-unit">GHUnit</a>, <a href="https://github.com/pivotal/cedar">Cedar</a> and <a href="http://www.kiwi-lib.info/">Kiwi</a>. Cedar and Kiwi use blocks to get close to an RSpec-like syntax, but there&#8217;s only so far it can go. Objective-C can&#8217;t match Ruby when creating a DSL, even with preprocessor abuse.</p>
<p>Fortunately, there is a way to write tests in Ruby and run them against Objective-C code: <a href="http://www.macruby.org/">MacRuby</a>. MacRuby is an implementation of Ruby 1.9 that compiles Ruby to LLVM bytecode and has full access to Objective-C frameworks. You can write full Mac desktop applications with it, but for this post I&#8217;ll simply use it to write test specs with RSpec for testing Objective-C classes.</p>
<p>In this post, I&#8217;ll walk you through how to install MacRuby, RSpec and how to set up your Cocoa (Mac or iOS) project to unit test with RSpec. These tests are analogous to model specs in Rails. We&#8217;ll be testing classes in isolation, not trying to recreate the Cocoa environment in order to test window or view controllers, etc.</p>
<p>A big caveat for iOS developers: MacRuby loads Objective-C code from a framework, but iOS targets don&#8217;t support building frameworks. What this means is that you don&#8217;t have access to the <tt>UI*</tt> classes in the code under test. This limits what you can test. Pure model classes (those without any external dependencies) will be fine. Theoretically, it should be possible to find the simulator frameworks and link against those, but I&#8217;ve been unsuccessful thus far. <a href="http://chameleonproject.org/">Chameleon</a> might help if you want to dig into this further.</p>
<p>With that out of the way, let&#8217;s get started. If you haven&#8217;t already, download and install MacRuby. This places the <tt>macruby</tt> binary and other Ruby tools you&#8217;re familiar with (<tt>irb</tt>, <tt>gem</tt>, <tt>rake</tt>) in <tt>/usr/local/bin</tt>, with <tt>mac</tt> prefixes.</p>
<p>Then, install RSpec 2.5 (at present, there are <a href="https://github.com/rspec/rspec-core/issues/461">problems running specs with 2.6</a>).</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">$ sudo macgem install --bindir /usr/local/bin --format-executable rspec -v '~&gt;2.5.0'</pre></div></div>

<p><tt>--bindir</tt> ensures the <tt>rspec</tt> script doesn&#8217;t overwrite one that might already exist in <tt>/usr/bin</tt>, and <tt>--format-executable</tt> adds the <tt>mac</tt> prefix to it, so it matches the other MacRuby-provided scripts.</p>
<p>In Xcode, open your project and create a new target (File -> New Target). Use the Cocoa Framework template, found under Mac OS X, Framework &amp; Library. Call it whatever you like. I used &#8220;Specs&#8221;. Do not use Automatic Reference Counting. MacRuby, like MRI Ruby, is garbage collected and will use the Objective-C garbage collector. If your project uses ARC, that&#8217;s OK. <tt>retain</tt>, <tt>release</tt> and <tt>autorelease</tt> are no-ops under GC, and nothing changes if the calls to them are missing in the first place. Include Unit Tests should also be unchecked.</p>
<p>You must adjust some build settings for the new target. Under Apple LLVM Compiler &#8211; Language, find the settings for Objective-C Automatic Reference Counting and ensure it is set to NO. Just below that, set Objective-C Garbage Collection to Supported.</p>
<p><img class="size-full wp-image-729 aligncenter" title="compiler settings for ARC and GC" src="http://lightyearsoftware.com/wp-content/uploads/2011/09/Screen-Shot-2011-09-23-at-11.47.39-AM.png" alt="" width="438" height="53" /></p>
<p>Go to the target build phases, and add the <tt>.m</tt> files you wish to test to the compile sources phase. As you add files to your project later, be sure to check the boxes for both your main target and the Specs target if you want to test the new code.</p>
<p>Finally, you need to configure the schemes for the new target. In the build scheme, check the run box. In the run scheme, choose <tt>/usr/local/bin/macruby</tt> as the executable to test.</p>
<p><img class="size-full wp-image-730 aligncenter" title="run scheme info configuration" src="http://lightyearsoftware.com/wp-content/uploads/2011/09/Screen-Shot-2011-09-23-at-11.53.56-AM.png" alt="" width="424" height="209" /></p>
<p>Set up the arguments to pass to the executable when it runs as follows:</p>
<p><img class="size-full wp-image-731 aligncenter" title="run scheme arguments configuration" src="http://lightyearsoftware.com/wp-content/uploads/2011/09/Screen-Shot-2011-09-23-at-11.54.10-AM.png" alt="" width="526" height="312" /></p>
<p>Choose your framework as the base for expansions. You&#8217;ll pass two arguments to the program: the path to the RSpec wrapper and the directory containing the specs.</p>
<p>You might wonder why we&#8217;re using MacRuby as the executable to test instead of RSpec directly. If you try to use RSpec, Xcode won&#8217;t recognize it as a 64-bit executable and will refuse to run it under the debugger. It will work, but you must also choose &#8220;debugger: none&#8221; and give up your breakpoints, etc.</p>
<p>With this new target you get a new top-level group in your project. Xcode has also created Specs.h and Specs.m, which we don&#8217;t need. You should delete them.</p>
<p>Create a new file in this group called <tt>spec_helper.rb</tt> and paste this in:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">framework <span style="color:#996600;">'Specs'</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Requires supporting ruby files with custom matchers and macros, etc,</span>
<span style="color:#008000; font-style:italic;"># in spec/support/ and its subdirectories.</span>
<span style="color:#CC00FF; font-weight:bold;">Dir</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;#{ENV['SRCROOT']}/Specs/support/**/*.rb&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">each</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>f<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#CC0066; font-weight:bold;">require</span> f<span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
RSpec.<span style="color:#9900CC;">configure</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>config<span style="color:#006600; font-weight:bold;">|</span>
  <span style="color:#008000; font-style:italic;"># == Mock Framework</span>
  <span style="color:#008000; font-style:italic;">#</span>
  <span style="color:#008000; font-style:italic;"># If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:</span>
  <span style="color:#008000; font-style:italic;">#</span>
  <span style="color:#008000; font-style:italic;"># config.mock_with :mocha</span>
  <span style="color:#008000; font-style:italic;"># config.mock_with :flexmock</span>
  <span style="color:#008000; font-style:italic;"># config.mock_with :rr</span>
  config.<span style="color:#9900CC;">mock_with</span> <span style="color:#ff3333; font-weight:bold;">:spec</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>At this point, you should be able to choose your new target from the scheme picker in the toolbar and run. We haven&#8217;t created any specs yet, so you should see this:</p>
<pre>
GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Mon Aug  8 20:32:45 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".tty /dev/ttys004
[Switching to process 1636 thread 0x0]
No examples were matched. Perhaps {:if=>#&lt;Proc:0x4007553a0 (lambda)>, :unless=>#&lt;Proc:0x400795b60 (lambda)>} is excluding everything?

Finished in 0.0331 seconds
0 examples, 0 failures
Program ended with exit code: 0
</pre>
<p>You may not see any output. You can use ⌘7 and look at the most recent log or use this <a href="http://twitter.com/pilky/status/109737034633060352">tip from Martin Pilkington</a> to create a new window for output. I find this much less intrusive than allowing Xcode to constantly pop up the debugging panes in my editor windows.</p>
<p>Let&#8217;s create a simple spec file. Assuming you added a <tt>.m</tt> file that implements a class called <tt>Foo</tt>, create a new file in your Specs group called <tt>foo_spec.rb</tt>:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;#{ENV['SRCROOT']}/Specs/spec_helper&quot;</span>
&nbsp;
describe Foo <span style="color:#9966CC; font-weight:bold;">do</span>
  it <span style="color:#006600; font-weight:bold;">&#123;</span> should be_an_instance_of<span style="color:#006600; font-weight:bold;">&#40;</span>Foo<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Run again and you should see this:</p>
<pre>
GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Mon Aug  8 20:32:45 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".tty /dev/ttys004
[Switching to process 1796 thread 0x0]
.

Finished in 0.40422 seconds
1 example, 0 failures
Program ended with exit code: 0
</pre>
<p>It works! Now try adding breakpoints, mocking and stubbing objects, etc. You have all the features of RSpec available to you.</p>
]]></content:encoded>
			<wfw:commentRss>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2011%2F09%2Funit-testing-cocoa-with-macruby%2F&#038;seed_title=Unit+Testing+Cocoa+with+MacRuby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pow, IPv6 and localhost</title>
		<link>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2011%2F04%2Fpow-ipv6-localhost%2F&#038;seed_title=Pow%2C+IPv6+and+localhost</link>
		<comments>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2011%2F04%2Fpow-ipv6-localhost%2F&#038;seed_title=Pow%2C+IPv6+and+localhost#comments</comments>
		<pubDate>Thu, 21 Apr 2011 18:52:40 +0000</pubDate>
		<dc:creator>Steve Madsen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Ruby & Rails]]></category>

		<guid isPermaLink="false">http://lightyearsoftware.com/?p=670</guid>
		<description><![CDATA[Pow is a new zero-configuration server for Rack web applications by 37Signals. It makes development, especially on multiple applications, painless: it adds a new .dev domain, with individual apps symlinked from ~/.pow. Pow manages application instances automatically and integrates seamlessly with RVM. I&#8217;ve been using Passenger Standalone instead of WEBrick or Mongrel for a while [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://pow.cx/">Pow</a> is a new zero-configuration server for Rack web applications by 37Signals. It makes development, especially on multiple applications, painless: it adds a new <tt>.dev</tt> domain, with individual apps symlinked from <tt>~/.pow</tt>. Pow manages application instances automatically and integrates seamlessly with <a href="https://rvm.beginrescueend.com/">RVM</a>.<span id="more-670"></span></p>
<p>I&#8217;ve been using Passenger Standalone instead of WEBrick or Mongrel for a while and it&#8217;s great, but Pow simplifies things even further: now I don&#8217;t even have to restart the server when switching between projects.</p>
<p>The only thing that bothered me is that it installs a firewall rule to forward traffic from port 80 to 20559. I do some PHP work under the Apache that ships with OS X and I don&#8217;t want to add a port number to my URL there, nor do I want to uglify those nice new <tt>.dev</tt> URLs for Pow.</p>
<p>Oddly enough, though, this isn&#8217;t true for me. If I go to <tt>localhost</tt>, up came the expected page from Apache, while <tt>foo.dev</tt> went to Pow. I didn&#8217;t specify a port for either.</p>
<p>What&#8217;s happening is that <tt>localhost</tt> is resolving to an IPv6 address (::1) and the <tt>ipfw</tt> rule doesn&#8217;t cover IPv6, only IPv4.</p>
<p>In this case, &#8220;it&#8217;s not a bug, it&#8217;s a feature&#8221; is 100% true. I hope Pow never &#8220;fixes&#8221; this.</p>
<p><strong>Update June 29:</strong> Sadly, while I haven&#8217;t updated Pow, Mac OS X 10.6.8 now resolves &#8220;localhost&#8221; to the IPv4 address and this little trick has stopped working for me. Using the IPv6 loopback address is still OK: <a href="http://[::1]/">http://[::1]/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2011%2F04%2Fpow-ipv6-localhost%2F&#038;seed_title=Pow%2C+IPv6+and+localhost/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQL 5.5 on Mac OS X</title>
		<link>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2011%2F02%2Fmysql-5-5-on-mac-os-x%2F&#038;seed_title=MySQL+5.5+on+Mac+OS+X</link>
		<comments>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2011%2F02%2Fmysql-5-5-on-mac-os-x%2F&#038;seed_title=MySQL+5.5+on+Mac+OS+X#comments</comments>
		<pubDate>Fri, 25 Feb 2011 16:22:52 +0000</pubDate>
		<dc:creator>Steve Madsen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Ruby & Rails]]></category>

		<guid isPermaLink="false">http://lightyearsoftware.com/?p=643</guid>
		<description><![CDATA[If you&#8217;re (re)building a development workstation on Mac OS X, you may have decided to use the latest MySQL 5.5 packages from mysql.com. Unfortunately, that means you probably have seen (or will soon see) two problems. The first is this: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re (re)building a development workstation on Mac OS X, you may have decided to use the latest MySQL 5.5 packages from mysql.com. Unfortunately, that means you probably have seen (or will soon see) two problems.<span id="more-643"></span> The first is this:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib
Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle</pre></div></div>

<p>That example is from the mysql2 gem, but the same problem exists with the older mysql gem. The problem is that the libmysqlclient shared library in the MySQL 5.5 package does not specify a full path to the library. When something links with it, such as the MySQL gem, it won&#8217;t be able to find the library at runtime.</p>
<p>There are two ways to fix this.</p>
<ol>
<li>
<p>The easy way: modify <tt>DYLD_LIBRARY_PATH</tt> in your <tt>.bash_profile</tt> (or equivalent if you use another shell). The advantage to this method is that it fixes it once for anything that links with the MySQL client libraries going forward. Add:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">DYLD_LIBRARY_PATH=&quot;/usr/local/mysql/lib:$DYLD_LIBRARY_PATH&quot;</pre></div></div>

</li>
<li>
<p>The hard, do-it-again-someday way: modify the <tt>.bundle</tt> files within the gem to use an absolute path to the MySQL client library. The fix is lost when reinstalling the gem or updating to a new version and must be reapplied. Change to your gem&#8217;s root, somewhere like <tt>/Library/Ruby/Gems/1.8/gems/mysql-2.8.1</tt> or <tt>.../mysql2-0.2.6</tt>, or even both. There are two <tt>.bundle</tt> files within the gem (under <tt>lib</tt> and <tt>ext</tt>) that you must run the following command on.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">$ sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib mysql_api.bundle</pre></div></div>

</li>
</ol>
<p>The second problem with the MySQL 5.5 packages is in the MySQLStartupItem and preference pane. Neither work to start or stop the server.</p>
<ol>
<li>
<p>The ownership of the StartupItem files is wrong. OS X complains with</p>
<blockquote><p>&#8220;/Library/StartupItems/MySQLCOM” has not been started because it does not have the proper security settings.</p></blockquote>
<p>To fix that, run:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">$ sudo chown -R root:wheel /Library/StartupItems/MySQLCOM</pre></div></div>

</li>
<li>
<p><tt>basedir</tt> and <tt>datadir</tt> are not set in <tt>/usr/local/mysql/support-files/mysql.server</tt>, which breaks the preference pane. Edit that file with superuser privileges (<tt>sudo mate</tt> or vi, joe, &#8230;) and set them:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">basedir=/usr/local/mysql
datadir=/usr/local/mysql/data</pre></div></div>

</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2011%2F02%2Fmysql-5-5-on-mac-os-x%2F&#038;seed_title=MySQL+5.5+on+Mac+OS+X/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>SQL Logging: Gemified and Now for Rails 3</title>
		<link>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2010%2F11%2Fsql-logging-gemified-and-now-for-rails-3%2F&#038;seed_title=SQL+Logging%3A+Gemified+and+Now+for+Rails+3</link>
		<comments>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2010%2F11%2Fsql-logging-gemified-and-now-for-rails-3%2F&#038;seed_title=SQL+Logging%3A+Gemified+and+Now+for+Rails+3#comments</comments>
		<pubDate>Mon, 22 Nov 2010 19:07:55 +0000</pubDate>
		<dc:creator>Steve Madsen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Ruby & Rails]]></category>

		<guid isPermaLink="false">http://lightyearsoftware.com/blog/?p=325</guid>
		<description><![CDATA[Of the handful of plug-ins I&#8217;ve written for Rails over the years, the one I install on new projects almost with thinking is sql_logging. I wrote that plug-in almost three years ago and it continues to work on Rails 2.3 apps today. That isn&#8217;t true on Rails 3, though, so over the last few days [...]]]></description>
			<content:encoded><![CDATA[<p>Of the handful of plug-ins I&#8217;ve written for Rails over the years, the one I install on new projects almost with thinking is <a href="http://lightyearsoftware.com/blog/2008/02/the-sql_logging-debugging-plug-in/">sql_logging</a>. I wrote that plug-in almost three years ago and it continues to work on Rails 2.3 apps today.</p>
<p>That isn&#8217;t true on Rails 3, though, so over the last few days I&#8217;ve taken the time to reevaluate the plug-in and figure out how to do the same work in Rails 3. The result is the new <a href="https://github.com/lightyear/sql-logging">sql-logging gem</a>. The source is hosted on GitHub and the gem itself is available, like any other, on rubygems.org.</p>
<p><span id="more-325"></span></p>
<p>Externally, little has changed. <tt>sudo gem install sql-logging</tt> (or put it in your <tt>Gemfile</tt> and <tt>bundle install</tt>), then restart your application., You&#8217;ll see additional information in your console: a count of rows returned by each SQL statement, a rough count of bytes in the response, a backtrace that shows you exactly what triggered the execution, and a top 10 list of the most time-consuming queries in each request.</p>
<p>I moved configuration out of the <tt>ActionController::Base</tt> class and into <tt>SqlLogging::Statistics</tt>, but the names are (mostly) the same. Check the README for details.</p>
]]></content:encoded>
			<wfw:commentRss>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2010%2F11%2Fsql-logging-gemified-and-now-for-rails-3%2F&#038;seed_title=SQL+Logging%3A+Gemified+and+Now+for+Rails+3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Couldn&#8217;t find &#8216;rspec&#8217; generator?</title>
		<link>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2010%2F11%2Fcouldnt-find-rspec-generator%2F&#038;seed_title=Couldn%26%238217%3Bt+find+%26%238216%3Brspec%26%238217%3B+generator%3F</link>
		<comments>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2010%2F11%2Fcouldnt-find-rspec-generator%2F&#038;seed_title=Couldn%26%238217%3Bt+find+%26%238216%3Brspec%26%238217%3B+generator%3F#comments</comments>
		<pubDate>Thu, 04 Nov 2010 20:51:59 +0000</pubDate>
		<dc:creator>Steve Madsen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Ruby & Rails]]></category>

		<guid isPermaLink="false">http://lightyearsoftware.com/blog/?p=322</guid>
		<description><![CDATA[If you&#8217;ve moved on to Rails 3 and RSpec 2, but have older projects that are still on Rails 2.3 and RSpec 1.3.x, you may notice that script/generate no longer shows the RSpec generators in them, even if you&#8217;ve frozen the correct version of rspec and rspec-rails into vendor/gems. I&#8217;m not sure of the proper [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve moved on to Rails 3 and RSpec 2, but have older projects that are still on Rails 2.3 and RSpec 1.3.x, you may notice that <tt>script/generate</tt> no longer shows the RSpec generators in them, even if you&#8217;ve frozen the correct version of <tt>rspec</tt> and <tt>rspec-rails</tt> into <tt>vendor/gems</tt>.</p>
<p>I&#8217;m not sure of the proper place to report this bug, but a quickie workaround is to uninstall the newer <tt>rspec-rails</tt> gem so that 1.3.x is the newest in <tt>gem list</tt>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2010%2F11%2Fcouldnt-find-rspec-generator%2F&#038;seed_title=Couldn%26%238217%3Bt+find+%26%238216%3Brspec%26%238217%3B+generator%3F/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bundler Simplified</title>
		<link>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2010%2F10%2Fbundler-simplified%2F&#038;seed_title=Bundler+Simplified</link>
		<comments>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2010%2F10%2Fbundler-simplified%2F&#038;seed_title=Bundler+Simplified#comments</comments>
		<pubDate>Tue, 05 Oct 2010 19:21:20 +0000</pubDate>
		<dc:creator>Steve Madsen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Ruby & Rails]]></category>

		<guid isPermaLink="false">http://lightyearsoftware.com/blog/?p=304</guid>
		<description><![CDATA[Following up on my previous post about adapting pre-Bundler workflows to current best practices, Yehuda Katz posted his suggestions on how to approach Bundler in terms of what you used to do. It&#8217;s a good read. One thing that caught me up was the deployment suggestion to require 'bundler/capistrano' in deploy.rb. If you installed Rails [...]]]></description>
			<content:encoded><![CDATA[<p>Following up on my <a href="http://lightyearsoftware.com/blog/2010/09/vendorrails-in-the-age-of-bundler/">previous post</a> about adapting pre-Bundler workflows to current best practices, Yehuda Katz posted his <a href="http://yehudakatz.com/2010/09/30/bundler-as-simple-as-what-you-did-before/">suggestions on how to approach Bundler in terms of what you used to do</a>. It&#8217;s a good read.</p>
<p>One thing that caught me up was the deployment suggestion to <tt>require 'bundler/capistrano'</tt> in <tt>deploy.rb</tt>. If you installed Rails 3.0 soon after it was released, you may still have one of the Bundler 1.0 release candidates. I had RC3, and it didn&#8217;t include the Capistrano file, which led to a load error. Update your gem, and all will be well.</p>
]]></content:encoded>
			<wfw:commentRss>http://lightyearsoftware.com/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Flightyearsoftware.com%2F2010%2F10%2Fbundler-simplified%2F&#038;seed_title=Bundler+Simplified/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.423 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-21 21:30:03 -->

