<?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>andy goundry &#187; Ruby</title>
	<atom:link href="http://www.andygoundry.com/category/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andygoundry.com</link>
	<description>many things web</description>
	<lastBuildDate>Tue, 23 Mar 2010 01:53:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Merb Gem Cleanup</title>
		<link>http://www.andygoundry.com/2009/11/25/merb-gem-cleanup/</link>
		<comments>http://www.andygoundry.com/2009/11/25/merb-gem-cleanup/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 18:33:31 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[DataMapper]]></category>
		<category><![CDATA[Merb]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.andygoundry.com/?p=461</guid>
		<description><![CDATA[It seems to be a common issue for us Merbists, who depend on multiple Gems for merb to play nicely to get into a bit of a mess as gems are updated.
So, at times a cleanup is in order. Here is what i&#8217;ve done to cleanup my merb setup:

$ sudo gem update --system
$ gem search [...]]]></description>
			<content:encoded><![CDATA[<p>It seems to be a common issue for us Merbists, who depend on multiple Gems for merb to play nicely to get into a bit of a mess as gems are updated.</p>
<p>So, at times a cleanup is in order. Here is what i&#8217;ve done to cleanup my merb setup:</p>
<blockquote>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 12px; color: #000000; overflow-x: auto; overflow-y: auto; background-color: #f3f3f3; padding: 1em;">$ <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">sudo</span> <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">gem</span> update --system
$ <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">gem</span> search --no-version merb | grep merb | xargs <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">sudo</span> <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">gem</span> un<span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">install</span> -a # NOTE: removes all old version of merb
$ <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">gem</span> search --no-version dm | grep dm | xargs <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">sudo</span> <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">gem</span> un<span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">install</span> -a # NOTE: removes all old version of data_mapper
$ <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">gem</span> search --no-version data_objects | grep data_objects | xargs <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">sudo</span> <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">gem</span> un<span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">install</span> -a # NOTE: removes all old version of data_objects
$ <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">sudo</span> <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">gem</span> sources -c
$ <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">sudo</span> rm PATH_TO_<span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">GEM</span>S/cache/merb* # PATH_TO_<span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">GEM</span>S is the path to your ruby<span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">gem</span>s <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">install</span>.  Mine is /usr/lib/ruby/<span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">gem</span>s/1.8
$ <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">sudo</span> rm PATH_TO_<span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">GEM</span>S/cache/dm*
$ <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">sudo</span> <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">gem</span> <span style="color: #000000; background-color: #ffff99; padding: 0px; margin: 0px;">install</span> -r merb</pre>
</blockquote>
<p>This was taken from the meb installation instructions at: <a href="http://wiki.merbivore.com/howto/installation/gems">http://wiki.merbivore.com/howto/installation/gems</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andygoundry.com/2009/11/25/merb-gem-cleanup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Cucumber, Webrat and Selenium to test ajax form field validations</title>
		<link>http://www.andygoundry.com/2009/09/04/using-cucumber-webrat-and-selenium-to-test-ajax-form-field-validations/</link>
		<comments>http://www.andygoundry.com/2009/09/04/using-cucumber-webrat-and-selenium-to-test-ajax-form-field-validations/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 18:11:09 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Cucumber]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Merb]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Webrat]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.andygoundry.com/?p=439</guid>
		<description><![CDATA[I have an app that fires an ajax request on a form field to validate its contents when I take focus off the field.
I am also using Cucumber, Webrat and Selenium for my integration tests.
I needed my integration tests to test the Ajax responses and the tests weren&#8217;t receiving a response from the Ajax requests.
The [...]]]></description>
			<content:encoded><![CDATA[<p>I have an app that fires an ajax request on a form field to validate its contents when I take focus off the field.</p>
<p>I am also using Cucumber, Webrat and Selenium for my integration tests.</p>
<p>I needed my integration tests to test the Ajax responses and the tests weren&#8217;t receiving a response from the Ajax requests.</p>
<p><strong>The Problem</strong></p>
<p>I found that by simply completing the web form, the ajax request was not being fired and my test was therefore failing when i checked for the existance of the Ajax response. It soon became clear that selenium doesn&#8217;t really interact with the form in the sense of selecting fields and entering values; It simply enters values. As such, the Ajax request was not firing and my test was failing.</p>
<p><strong>The Solution</strong></p>
<p>The solution is Selenium&#8217;s fireEvent method, which you can pass a form field id and the blur method:</p>
<blockquote><p>selenium_session.fireEvent(&#8221;field&#8221;, &#8220;blur&#8221;);</p></blockquote>
<p>In Webrat, this is ever simpler:</p>
<blockquote><p>fire_event(&#8221;field&#8221;,&#8221;blur&#8221;)</p></blockquote>
<p>On using this in a Cucumber step, the ajax is fired as the blur command tells the browser to take focus off the field.</p>
<p>Lovely!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andygoundry.com/2009/09/04/using-cucumber-webrat-and-selenium-to-test-ajax-form-field-validations/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Setting up Merb, Cucumber and Webrat (and friends) on Snow Leopard</title>
		<link>http://www.andygoundry.com/2009/09/04/setting-up-merb-cucumber-and-webrat-on-snow-leopard-some-good-some-bad/</link>
		<comments>http://www.andygoundry.com/2009/09/04/setting-up-merb-cucumber-and-webrat-on-snow-leopard-some-good-some-bad/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 14:36:06 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Cucumber]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Merb]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Webrat]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.andygoundry.com/?p=428</guid>
		<description><![CDATA[
My upgrade to Snow Leopard killed my Merb, Cucumber and Webrat setup so i had to start afresh. That was the bad. The good is that some manual hacks that were required in Leopard are no longer necessary, meaning I can rely on direct gem installations.
Here&#8217;s what i did:

Install Ruby and Gems
Follow instructions on http://hivelogic.com/articles/compiling-ruby-rubygems-and-rails-on-snow-leopard/
Install [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>My upgrade to Snow Leopard killed my Merb, Cucumber and Webrat setup so i had to start afresh. That was the bad. The good is that some manual hacks that were required in Leopard are no longer necessary, meaning I can rely on direct gem installations.</p>
<p>Here&#8217;s what i did:</p>
<ol>
<li><strong>Install Ruby and Gems<br />
<span style="font-weight: normal; ">Follow instructions on <a href="http://hivelogic.com/articles/compiling-ruby-rubygems-and-rails-on-snow-leopard/">http://hivelogic.com/articles/compiling-ruby-rubygems-and-rails-on-snow-leopard/</a></span></strong></li>
<li><strong>Install merb, rspec, cucumber, merb_cucumber and mongrel and dependencies<br />
<span style="font-weight: normal; ">sudo gem install merb rspec cucumber roman-merb_cucumber mongrel term-ansicolor treetop diff-lcs nokogiri do_sqlite3</span></strong></li>
<li><strong>Install webrat<br />
<span style="font-weight: normal;">sudo gem install hoe hpricot webrat</span></strong></li>
<li><strong><span style="font-weight: normal;"><strong>Fix Firefox bug with Snow Leopard<br />
<span style="font-weight: normal;">For some reason the libsqlite3.dylib  library in FireFox 3.5.2 is out of date and breaks cucumber under Snow Leopard. Thankfully, it&#8217;s a simple fix:<br />
mv /Applications/Firefox.app/Contents/MacOS/libsqlite3.dylib /Applications/Firefox.app/Contents/MacOS/libsqlite3.dylib.orig<br />
cp /usr/lib/libsqlite3.dylib /Applications/Firefox.app/Contents/MacOS/libsqlite3.dylib</span></strong></span></strong></li>
<li><strong><span style="font-weight: normal;"><strong><span style="font-weight: normal;"><strong>Install Selenium<br />
<span style="font-weight: normal;">sudo gem install Selenium<br />
sudo gem install selenium-client</span></strong></span></strong></span></strong></li>
<li><strong>Install the textmate cucumber bundle<br />
<span style="font-weight: normal;"><a href="http://github.com/bmabey/cucumber-tmbundle/tree/master">http://github.com/bmabey/cucumber-tmbundle/tree/master</a></span></strong></li>
</ol>
<p><strong>Deprecated Instructions on Snow Leopard that were required on Leopard</strong></p>
<p>The following ugly hacks were required on Leopard with it&#8217;s default Ruby installation. These are no longer required (at least on my machine) on Snow Leopard:</p>
<p><span style="text-decoration: underline;">Manual hack of Selenium</span></p>
<p>http://wiki.github.com/aslakhellesoy/cucumber/setting-up-selenium</p>
<p>As the instructions recommended replacing the Selemium RC jar file () in the installed gem with one from the Selenium website, i had to find out where the gem had installed. Thankfully, gem -h pointed me toward gem help commands and from there i ran gem environment &#8211; This told me where gems are installed locally and i found that Selemium RC had been installed into /Library/Ruby/Gems/1.8/gems/Selenium-1.1.14/ I replaced as advised and then ran selenium from within the app root and all worked fine, using the replacement. I then downloaded and ran the test selenium code from http://github.com/aslakhellesoy/cucumber/tree/master/examples/selenium running selenium in a different console and then running cucumber examples/selenium/features/ . It worked a treat and booted up selenium as required. Great!</p>
<p><span style="text-decoration: underline;">Manual hack installation of webrat</span></p>
<p>Download http://github.com/gwynm/webrat/tree/master tar file. Git clone doesn&#8217;t work</p>
<p>sudo gem install hoe hpricot<br />
cd downloaded and untarred file<br />
rake gem<br />
sudo gem install pkg/webrat-0.2.1.gem</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.andygoundry.com/2009/09/04/setting-up-merb-cucumber-and-webrat-on-snow-leopard-some-good-some-bad/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Portal containers: Supporting the vision of technology-agnostic applications?</title>
		<link>http://www.andygoundry.com/2009/04/15/liferay-technology-agnostic-portal-and-soa-development-with-automated-testing/</link>
		<comments>http://www.andygoundry.com/2009/04/15/liferay-technology-agnostic-portal-and-soa-development-with-automated-testing/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 16:50:34 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[portal]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://www.andygoundry.com/?p=336</guid>
		<description><![CDATA[I&#8217;ve been looking at Liferay recently. It turns out to be a fantastic portal container. It&#8217;s core is not necessarily better than it&#8217;s closest rival JBoss Portal, but it comes with a mammoth selection of portlets out of the box. Also, with the support for the portlet standard being adopted across multiple technologies, you&#8217;re not [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been looking at <a href="http://www.liferay.com">Liferay</a> recently. It turns out to be a fantastic portal container. It&#8217;s core is not necessarily better than it&#8217;s closest rival <a href="http://jboss.org/jbossportal">JBoss Portal</a>, but it comes with a mammoth selection of portlets out of the box. Also, with the support for the portlet standard being adopted across multiple technologies, you&#8217;re not locked into Java for new functionality &#8211; in fact, i&#8217;m currently building a portlet in Ruby. On top of that, the core system is covered (exactly how covered is unclear at the moment, but we&#8217;ll gain that awareness soon), in Selenium RC integration test scripts. Perfect! All that&#8217;s missing is an adoption of BDD stories, but that can be added.</p>
<p><strong>One warning &#8211; accessibility not out of the box</strong></p>
<p>Liferay&#8217;s out of the box portlets are not accessible! It&#8217;s a known issue and Liferay want the community to support them in fixing this. Seems like a reasonable request and it&#8217;s lack of focus on accessibility stems most likely out it&#8217;s origins in USA. They care less than the brits about this stuff!</p>
<p><strong>Tutorials</strong></p>
<p>I&#8217;ll post tutorials as i progress through my Ruby portlet development and integration. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.andygoundry.com/2009/04/15/liferay-technology-agnostic-portal-and-soa-development-with-automated-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is a DSL?</title>
		<link>http://www.andygoundry.com/2009/04/15/what-is-a-dsl/</link>
		<comments>http://www.andygoundry.com/2009/04/15/what-is-a-dsl/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 16:24:23 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://www.andygoundry.com/?p=329</guid>
		<description><![CDATA[I tweeted a link to this url, but didn&#8217;t blog it. I should have, so here it is:
What is a DSL?
It got me all excited so i&#8217;ve started (slowly, i&#8217;ll admit) to write my own DSL in Ruby. I&#8217;ll post how i get on.
]]></description>
			<content:encoded><![CDATA[<p>I tweeted a link to this url, but didn&#8217;t blog it. I should have, so here it is:</p>
<p><a href="http://www.oreillynet.com/ruby/blog/2005/12/what_is_a_dsl.html">What is a DSL?</a></p>
<p>It got me all excited so i&#8217;ve started (slowly, i&#8217;ll admit) to write my own DSL in Ruby. I&#8217;ll post how i get on.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andygoundry.com/2009/04/15/what-is-a-dsl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Now we&#8217;re rocking! DSL story driven development and testing in Java!</title>
		<link>http://www.andygoundry.com/2008/12/09/now-were-rocking-dsl-story-driven-development-in-java/</link>
		<comments>http://www.andygoundry.com/2008/12/09/now-were-rocking-dsl-story-driven-development-in-java/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 00:04:44 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://www.adveho.net/?p=152</guid>
		<description><![CDATA[At TechnoPhobia, we have an interesting challenge to implement a technology agnostic requirements capture process that (in my mind) will enable us, with very minimal effort, to repurpose these documented requirements into fully automated browser tests. I&#8217;m thinking that the process could look something like this:

The project and client team write end-user functional requirements as User Stories and [...]]]></description>
			<content:encoded><![CDATA[<p>At <a href="http://www.technophobia.com">TechnoPhobia</a>, we have an interesting challenge to implement a <strong>technology agnostic requirements capture process</strong> that (in my mind) will enable us, with very minimal effort, to repurpose these documented requirements into fully automated browser tests. I&#8217;m thinking that the process could look something like this:</p>
<ol>
<li>The project and client team write end-user functional requirements as <strong><a href="http://tinyurl.com/story-driven-testing">User </a></strong><strong><a href="http://tinyurl.com/story-driven-testing">Stories and Scenarios</a></strong></li>
<li>The stories are stored as plain text in SVN or GIT and made immediately available to the development and test teams</li>
<li>The development and test teams create a few executable padder files, wrapped around these stories, turning them into fully automatable browser tests</li>
<li>The executable files are run, they read the stories and interact with the browser to determine if the stories successfully pass</li>
</ol>
<p><strong>Pretty cool, huh! </strong>No more massive team specific documents, just good old plain textual stories that are shared by all on the project, including the client.</p>
<p><strong>Making this happen across multiple technologies</strong></p>
<ul>
<li>In Ruby, we&#8217;ve already used this parts of this approach on a <a href="http://selfreview.becta.org.uk">live project</a> using <a href="http://github.com/aslakhellesoy/cucumber/wikis">Cucumber (formally RSpec story runner)</a>. It worked pretty well. </li>
<li>In Java, <a href="http://easyb.org/">easyb</a> seems to be the a good forward. Here&#8217;s a little more about <a href="http://tinyurl.com/java-dsl">using easyb</a></li>
</ul>
<p>I am <strong>WAY TOO EXCITED</strong> to see an implementation in Java! This opens massive opportunity to progress with a technology agnostic approach. Now to find a suitable solution for .Net and perhaps PHP</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andygoundry.com/2008/12/09/now-were-rocking-dsl-story-driven-development-in-java/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Merb &amp; Adobe Air File Uploader &#8211; Nice!</title>
		<link>http://www.andygoundry.com/2008/10/29/merb-adobe-air-file-uploader-nice/</link>
		<comments>http://www.andygoundry.com/2008/10/29/merb-adobe-air-file-uploader-nice/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 22:32:58 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://www.adveho.net/?p=133</guid>
		<description><![CDATA[Whilst writing an Adobe Lightroom plugin to upload library items to a rails app, i spotted something i definitely need to play with! Adobe Air and Merb file uploader. Looks rather handy!
]]></description>
			<content:encoded><![CDATA[<p>Whilst writing an Adobe Lightroom plugin to upload library items to a rails app, i spotted something i definitely need to play with! Adobe Air and Merb file uploader. <a href="http://blog.vixiom.com/2007/06/29/merb-on-air-drag-and-drop-multiple-file-upload/">Looks rather handy</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andygoundry.com/2008/10/29/merb-adobe-air-file-uploader-nice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sproutcore &#8211; 1st impressions</title>
		<link>http://www.andygoundry.com/2008/10/14/sproutcore-1st-impressions/</link>
		<comments>http://www.andygoundry.com/2008/10/14/sproutcore-1st-impressions/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 12:35:33 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://www.adveho.net/?p=91</guid>
		<description><![CDATA[Today i had a short play with Sproutcore (the &#8220;Cocoa for the Web&#8221; JS framework used by and optimized by Apple for me.com) for the first time. I was a little surprised with what i found.
 
 
 
 
 
 
The Great

The development tools are in Ruby using the merb framework
The development tools adopt a Rails like MVC architectural pattern, with commands like 

sc-gen model example/contact
sc-gen [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.adveho.net/wp-content/uploads/2008/10/sproutcore.jpg"><img class="size-medium wp-image-93 alignleft" title="sproutcore" src="http://www.adveho.net/wp-content/uploads/2008/10/sproutcore.jpg" alt="" width="285" height="238" /></a>Today i had a short play with Sproutcore (the &#8220;Cocoa for the Web&#8221; JS framework used by and optimized by Apple for me.com) for the first time. I was a little surprised with what i found.</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p><strong>The Great</strong></p>
<ul>
<li>The development tools are in Ruby using the merb framework</li>
<li>The development tools adopt a Rails like MVC architectural pattern, with commands like </li>
</ul>
<p><span style="font-family: -webkit-monospace; line-height: 18px; white-space: pre;">sc-gen model example/contact</span><br />
<span style="font-family: -webkit-monospace; line-height: 18px; white-space: pre;">sc-gen controller example/detail</span><br />
<span style="font-family: -webkit-monospace; line-height: 18px; white-space: pre;">sc-gen view example/card</span></p>
<div>
<ul>
<li>The development tools include build tools that prepare all JS, HTML and CSS ready to be distributed.
<pre><code>sc-build</code></pre>
</li>
<li>The development tools have a bunch of ruby (rails-style) helpers
<pre><code>&lt;%= button_view :my_button, :label =&gt; 'Here is a functioning button!' %&gt;</code></pre>
</li>
</ul>
<div><strong>The not so great</strong></div>
<ul>
<li>It doesn&#8217;t work with the latest version of Merb (0.9.9 RC1) and doesn&#8217;t appear happy even having it around (even if 0.9.4 is installed, if seems to force a <a href="http://sproutit.lighthouseapp.com/projects/11697/tickets/201-os-x-merb-fatal-error-no-init">removal of 0.9.9 in order to work</a>) &#8211; <a href="http://github.com/lawrencepit/sproutcore-buildtools/commit/f76d745becfaeaca6fae28c9c01719abce2f2cdb">Patch</a> submitted, but only recently.</li>
</ul>
</div>
<div>I&#8217;ll keep playing and posting what i find, plus an app or 2 as i create them.</div>
<div>Check out these links for more info: </div>
<div>
<ul>
<li><a href="http://laurentbois.com/2008/06/16/sproutcore/">http://laurentbois.com/2008/06/16/sproutcore/</a></li>
<li><a href="http://www.sproutcore.com">http://www.sproutcore.com</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.andygoundry.com/2008/10/14/sproutcore-1st-impressions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
