<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:posterous="http://posterous.com/help/rss/1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>MrJaba's Adventures</title>
    <link>http://mrjaba.posterous.com</link>
    <description>Tales of things, and more importantly...stuff</description>
    <generator>posterous.com</generator>
    <link xmlns="http://www.w3.org/2005/Atom" href="http://posterous.com/api/sup_update#68f233d79" type="application/json" rel="http://api.friendfeed.com/2008/03#sup" />
    
    
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/MrjabasAdventures" /><feedburner:info uri="mrjabasadventures" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://posterous.superfeedr.com/" /><item>
      <pubDate>Mon, 06 Feb 2012 02:07:18 -0800</pubDate>
      <title>Ruby News Roundup 6/2/2012</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/8roJPRUV7lk/ruby-news-roundup-622012</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-622012</guid>
      <description>&lt;p&gt;
	&lt;a href="http://blog.plataformatec.com.br/2012/01/my-five-favorite-hidden-features-in-rails-3-2/"&gt;http://blog.plataformatec.com.br/2012/01/my-five-favorite-hidden-features-in-rails-3-2/&lt;/a&gt;&lt;br /&gt;If you&amp;#39;ve been living under a rock, you might have missed the fact that Rails 3.2 has been released. Jose Valim shows us his favourite features in the release. Some really nice stuff.&lt;p /&gt; &lt;a href="https://github.com/plataformatec/devise/blob/master/CHANGELOG.rdoc"&gt;https://github.com/plataformatec/devise/blob/master/CHANGELOG.rdoc&lt;/a&gt;&lt;br /&gt;Devise 2.0 was released last week, a few new features, nothing I&amp;#39;m crazy excited about though. &lt;p /&gt; &lt;a href="http://intridea.com/2012/1/24/prototyping-with-compass-and-serve"&gt;http://intridea.com/2012/1/24/prototyping-with-compass-and-serve&lt;/a&gt;&lt;br /&gt;Handy little article showing how to use Serve to quickly create prototypes without the need for setting up Rails/Sinatra/Framework Blah&lt;p /&gt; &lt;a href="https://github.com/eric1234/test_engine"&gt;https://github.com/eric1234/test_engine&lt;/a&gt;&lt;br /&gt;Engines are a little bit of a pain point in Rails when it comes to testing. This project aims to help a little by generating a dummy app for the tests to run against, but it&amp;#39;s preserved between tests.  Handy in that you don&amp;#39;t have to have a dummy app permanently sitting there.&lt;p /&gt; &lt;a href="http://mrkn.co/s/jruby_at_square_a_report,615/index.html"&gt;http://mrkn.co/s/jruby_at_square_a_report,615/index.html&lt;/a&gt;&lt;br /&gt;I haven&amp;#39;t watched this yet, but Xavier always writes incredibly useful stuff and knows what he&amp;#39;s talking about, so I&amp;#39;d put this on your &amp;quot;to watch&amp;quot; list too.&lt;p /&gt; &lt;a href="http://mtrpcic.github.com/pathjs/"&gt;http://mtrpcic.github.com/pathjs/&lt;/a&gt;&lt;br /&gt;Need some routing in your javascript app? Path is a nice looking lightweight library to help you out.&lt;p /&gt;&lt;a href="http://www.rubyinside.com/rubys-unary-operators-and-how-to-redefine-their-functionality-5610.html"&gt;http://www.rubyinside.com/rubys-unary-operators-and-how-to-redefine-their-functionality-5610.html&lt;/a&gt;&lt;br /&gt; I was giving the source of @peterc&amp;#39;s Test Rocket a read the other day to see the cleverness inside, and damn was it clever. It was like a giant ball of clever string that needed unravelling. I&amp;#39;d recommend giving it a read, but this article explains how it works very nicely. &lt;p /&gt; &lt;a href="http://www.infoq.com/news/2012/01/bitmap-marking-gc"&gt;http://www.infoq.com/news/2012/01/bitmap-marking-gc&lt;/a&gt;&lt;br /&gt;Ruby 1.9.3 already has a new Garbage Collector, but Ruby 2.0 is getting an upgrade with a copy-on-write compatible GC. This article explains how the new one works.. if you like that sort of thing.&lt;p /&gt; &lt;a href="http://elabs.se/blog/33-why-serenade"&gt;http://elabs.se/blog/33-why-serenade&lt;/a&gt;&lt;br /&gt;Serenade.js is another MVC framework for client side javascript apps. Jonas, explains in this article why he thinks there&amp;#39;s a need for this project and why it won&amp;#39;t be supporting IE6.. yay!&lt;p /&gt; &lt;a href="http://railsapps.github.com/rails-heroku-tutorial.html"&gt;http://railsapps.github.com/rails-heroku-tutorial.html&lt;/a&gt;&lt;br /&gt;Really detailed article on how to get Ruby 1.9.3 Rails 3.2 up and running on Heroku. Including details of database config, and dealing with multiple Heroku accounts.
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-622012"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-622012#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/8roJPRUV7lk" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-622012</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 23 Jan 2012 01:02:39 -0800</pubDate>
      <title>Ruby News Roundup 23/1/2012</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/_Fvc76KVShY/ruby-news-roundup-2312012</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-2312012</guid>
      <description>&lt;p&gt;
	&lt;a href="http://weblog.rubyonrails.org/2012/1/20/rails-3-2-0-faster-dev-mode-routing-explain-queries-tagged-logger-store"&gt;http://weblog.rubyonrails.org/2012/1/20/rails-3-2-0-faster-dev-mode-routing-explain-queries-tagged-logger-store&lt;/a&gt;&lt;br /&gt; Rails 3.2.0 was released on Friday, and it sounds great. There are a lot of new features and a lot of bug fixes. Check out the release notes for the highlights and there&amp;#39;s a link there to changelog that shows all of the changes. &lt;p /&gt; Josh Susser also released a blog post on one of the smaller changes in Rails 3.2.0 that he made. Association methods are now included via a module. What does this mean? Well it means you can override the methods much more easily and still access the parents&amp;#39; implementation via super. Currently you have to hack around this with alias_method_chain etc.&lt;br /&gt; &lt;a href="http://blog.hasmanythrough.com/2012/1/20/modularized-association-methods-in-rails-3-2"&gt;http://blog.hasmanythrough.com/2012/1/20/modularized-association-methods-in-rails-3-2&lt;/a&gt;&lt;p /&gt;&lt;a href="http://blog.nodejs.org/2012/01/19/node-v0-6-8/"&gt;http://blog.nodejs.org/2012/01/19/node-v0-6-8/&lt;/a&gt;&lt;br /&gt; Node.js got an update on the 19th with a few bug fixes and some version upgrades to core libraries.&lt;p /&gt;&lt;a href="http://aws.amazon.com/dynamodb/"&gt;http://aws.amazon.com/dynamodb/&lt;/a&gt;&lt;br /&gt;Need a fully managed NoSQL database? Look no further than Dynamo! Finally released by Amazon! Well actually, do look further as there are a wealth of options available. But do check this one out. &lt;p /&gt; &lt;a href="https://github.com/charliesome/twostroke"&gt;https://github.com/charliesome/twostroke&lt;/a&gt;&lt;br /&gt;A Javascript implementation in Ruby? Madness. Very cool though, will have to have a good read of the source of this as it looks like an interesting project to learn from. &lt;p /&gt; &lt;a href="http://maxdemarzi.com/2012/01/13/neo4j-on-heroku-part-one/"&gt;http://maxdemarzi.com/2012/01/13/neo4j-on-heroku-part-one/&lt;/a&gt;&lt;br /&gt;A very interesting series of blog posts on how to create a film recommendation app using Neo4J and hosted on Heroku. Neo4J is an graph database that makes the relationships between the objects, the edges, the interesting part of the data. Not had a use for this yet, but I might have a follow of this series and see what I think.&lt;p /&gt; &lt;a href="http://robots.thoughtbot.com/post/16196616388/factory-girl-2-5-gets-custom-constructors"&gt;http://robots.thoughtbot.com/post/16196616388/factory-girl-2-5-gets-custom-constructors&lt;/a&gt;&lt;br /&gt;Factory girl now lets you provide custom constructors for your Objects in factories. I&amp;#39;m in two minds about this, it does fix an issue that has been a problem with factory girl, but on the flip side it could potentially let how you create your objects in code deviate quite wildly from how you use them in tests. Non issue? Probably. &lt;p /&gt; &lt;a href="http://rubyheroes.com/"&gt;http://rubyheroes.com/&lt;/a&gt;&lt;br /&gt;It&amp;#39;s Ruby Heroes time again! Vote for all the amazing people in the Ruby community that put their time and effort into making it a better place for all of us. &lt;p /&gt; &lt;a href="https://github.com/pda/roflbalt"&gt;https://github.com/pda/roflbalt&lt;/a&gt;&lt;br /&gt;This is amazing. &lt;p /&gt;&lt;a href="http://blog.phusion.nl/2012/01/19/bundler-and-public-applications/"&gt;http://blog.phusion.nl/2012/01/19/bundler-and-public-applications/&lt;/a&gt;&lt;br /&gt; Hongli Lai, from Phusion explains an issue we have when it comes to installing database drivers in our Rails apps, and a proposed solution.
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-2312012"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-2312012#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/_Fvc76KVShY" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-2312012</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 18 Jan 2012 02:17:00 -0800</pubDate>
      <title>Facebook canvas bookmarks not loading application</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/exUyQ9HANMY/facebook-canvas-bookmarks-not-loading-applica</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/facebook-canvas-bookmarks-not-loading-applica</guid>
      <description>&lt;p&gt;
	&lt;p&gt;So we noticed a strange bug the other day with one of our Facebook applications, the bookmarks to your applications at the top right of the Facebook page, you know, these ones:&lt;div class='p_embed p_image_embed'&gt;
&lt;img alt="Screen_shot_2012-01-18_at_10" height="54" src="http://getfile7.posterous.com/getfile/files.posterous.com/mrjaba/zqFerIxNo88ZYmfi0VcKDcA87TCBngSEdmtMtFaGtwJAXSee4GMROTFhyoJI/Screen_shot_2012-01-18_at_10.1.png" width="130" /&gt;
&lt;/div&gt;
&lt;br /&gt;&amp;nbsp; weren't actually loading the test application. They were only doing a Javascript loader animation, but not loading the page itself. Odd, but turns put the fix is rather simple. To make this work, go to Applications, edit applications, basic settings, and make sure you give your app an&lt;strong&gt; "App Namespace"&lt;/strong&gt; and then save the changes. Should fix the issue.&lt;/p&gt;
&lt;p&gt;&lt;div class='p_embed p_image_embed'&gt;
&lt;a href="http://getfile0.posterous.com/getfile/files.posterous.com/mrjaba/b7YS6ajNjcQ9jzy1wg3sDU6NIE6k2HAvQOGQFIHxjSKaBdmu0Kw9i9TW8W7G/0Screen_shot_2012-01-18_at_10.1.png"&gt;&lt;img alt="0screen_shot_2012-01-18_at_10" height="29" src="http://getfile1.posterous.com/getfile/files.posterous.com/mrjaba/Ce3eWYd4gd4tWKlJa5RTGxa2blCBKzxRKZPBZfnBBYS8yvvu1jWUpkfOf5xb/0Screen_shot_2012-01-18_at_10.1.png.scaled.500.jpg" width="500" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/facebook-canvas-bookmarks-not-loading-applica"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/facebook-canvas-bookmarks-not-loading-applica#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/exUyQ9HANMY" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
      <media:content type="image/png" height="54" width="130" url="http://getfile7.posterous.com/getfile/files.posterous.com/mrjaba/zqFerIxNo88ZYmfi0VcKDcA87TCBngSEdmtMtFaGtwJAXSee4GMROTFhyoJI/Screen_shot_2012-01-18_at_10.1.png">
        <media:thumbnail height="54" width="130" url="http://getfile7.posterous.com/getfile/files.posterous.com/mrjaba/zqFerIxNo88ZYmfi0VcKDcA87TCBngSEdmtMtFaGtwJAXSee4GMROTFhyoJI/Screen_shot_2012-01-18_at_10.1.png" />
      </media:content>
      <media:content type="image/png" height="37" width="630" url="http://getfile0.posterous.com/getfile/files.posterous.com/mrjaba/b7YS6ajNjcQ9jzy1wg3sDU6NIE6k2HAvQOGQFIHxjSKaBdmu0Kw9i9TW8W7G/0Screen_shot_2012-01-18_at_10.1.png">
        <media:thumbnail height="29" width="500" url="http://getfile1.posterous.com/getfile/files.posterous.com/mrjaba/Ce3eWYd4gd4tWKlJa5RTGxa2blCBKzxRKZPBZfnBBYS8yvvu1jWUpkfOf5xb/0Screen_shot_2012-01-18_at_10.1.png.scaled.500.jpg" />
      </media:content>
    <feedburner:origLink>http://mrjaba.posterous.com/facebook-canvas-bookmarks-not-loading-applica</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 16 Jan 2012 01:57:19 -0800</pubDate>
      <title>Ruby News Roundup 16/1/2012</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/kI8_oHUh9BE/ruby-news-roundup-1612012</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-1612012</guid>
      <description>&lt;p&gt;
	&lt;a href="http://weblog.bocoup.com/introducing-the-backbone-boilerplate"&gt;http://weblog.bocoup.com/introducing-the-backbone-boilerplate&lt;/a&gt;&lt;br /&gt;A handy little collection of boilerplate code ready to assist in your development of Backbone.js apps.&lt;p /&gt; &lt;a href="http://www.playmycode.com/"&gt;www.playmycode.com/&lt;/a&gt;&lt;br /&gt;Really cool site for building HTML5 games in the browser. Write in a Ruby like syntax that compiles to JS. Looks like fun! &lt;p /&gt;&lt;br /&gt;&lt;a href="http://subinterest.com/rubies-in-the-rough"&gt;http://subinterest.com/rubies-in-the-rough&lt;/a&gt;&lt;br /&gt; @JEG2 has his own subscription only blog where he shares his wealth of Ruby Knowledge with us mere mortals. You&amp;#39;d be crazy not to check out the *free* samples he&amp;#39;s just released.&lt;p /&gt;&lt;a href="http://railscasts.com/episodes/314-pretty-urls-with-friendlyid"&gt;http://railscasts.com/episodes/314-pretty-urls-with-friendlyid&lt;/a&gt;&lt;br /&gt; Friendly ID is a rather more sophisticated way of providing nicer URL&amp;#39;s in Rails. A lot more powerful than overriding to_param. &lt;p /&gt;&lt;a href="https://github.com/evanphx/puma"&gt;https://github.com/evanphx/puma&lt;/a&gt;&lt;br /&gt; A highly concurrent webserver designed to use all of your CPU cores. To get this to work you&amp;#39;ll need to be running either Rubinius or JRuby, but it also claims that it might improve throughput even on MRI due to the way it handles blocking IO.&lt;p /&gt; &lt;a href="http://solnic.eu/2012/01/10/ruby-datamapper-status.html"&gt;http://solnic.eu/2012/01/10/ruby-datamapper-status.html&lt;/a&gt;&lt;br /&gt;The DataMapper team have released a roadmap of what&amp;#39;s to appear in version 2.0. It looks very promising indeed with a nice clean separation of concerns of each layer meaning they can be stuck together and used as a whole, or independently if you so desire. &lt;p /&gt; &lt;a href="http://highscalability.com/blog/2011/12/19/how-twitter-stores-250-million-tweets-a-day-using-mysql.html"&gt;http://highscalability.com/blog/2011/12/19/how-twitter-stores-250-million-tweets-a-day-using-mysql.html&lt;/a&gt;&lt;br /&gt; Few weeks old this one, but it&amp;#39;s a nice little insight into how Twitter stores it&amp;#39;s tweets. Rather impressive I must say!&lt;p /&gt;&lt;a href="http://wekeroad.com/2012/01/12/understanding-the-rails-asset-pipeline/"&gt;wekeroad.com/2012/01/12/understanding-the-rails-asset-pipeline/&lt;/a&gt;&lt;br /&gt; Is Rails 3 too over-enginered? I don&amp;#39;t think so, but apparently some people do. Although not the focus of this article, it touches on the topic before giving some nice explanation as to why the asset pipeline is a good thing.
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-1612012"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-1612012#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/kI8_oHUh9BE" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-1612012</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 09 Jan 2012 01:33:51 -0800</pubDate>
      <title>Ruby News Roundup: 9/1/2012</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/pOXPpe6-g4w/ruby-news-roundup-912012</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-912012</guid>
      <description>&lt;p&gt;
	&lt;b&gt;Happy New Year! &lt;/b&gt;I hope you all had a great Christmas break and a very jolly New Year! Here&amp;#39;s to a great 2012 to everyone! &lt;p /&gt;&lt;a href="https://github.com/wycats/parsejs"&gt;https://github.com/wycats/parsejs&lt;/a&gt;&lt;br /&gt; Yehuda has just released an interesting looking Ruby project that parses Javascript and gives you an AST in return for you to play with. Very cool! No idea what I&amp;#39;d use it for, but cool nonetheless.&lt;p /&gt;&lt;a href="http://documentcloud.github.com/underscore/"&gt;http://documentcloud.github.com/underscore/&lt;/a&gt;&lt;br /&gt; Version 1.2.4 of the JS utility library underscore has just been released with a few bug fixes. Complete with a snazzy new look on the website.&lt;p /&gt;&lt;a href="http://collectiveidea.com/blog/archives/2012/01/04/the-big-three-oh/"&gt;http://collectiveidea.com/blog/archives/2012/01/04/the-big-three-oh/&lt;/a&gt;&lt;br /&gt; Delayed Job just reached version 3.0, like 30 in human terms it&amp;#39;s a scary milestone for any young project. New features include: Named queues, Lifecycle callbacks, Backend gem dependencies for AR changed. &lt;p /&gt;This update may break your current projects with an UninitializedConstant error; if it does make sure you specify the new gem in your Gemfile: gem &amp;#39;delayed_job_active_record&amp;#39;&lt;p /&gt; &lt;a href="http://brightbox.com/blog/2012/01/04/riak-cluster/"&gt;http://brightbox.com/blog/2012/01/04/riak-cluster/&lt;/a&gt;&lt;br /&gt;John Leach over at Brightbox has released a guide on how to set up a 4 node Riak Cluster on their new cloud service. They&amp;#39;re using it internally as well, so sounds like it&amp;#39;s a good option.&lt;p /&gt; &lt;a href="http://jonathanleighton.com/articles/2012/announcing-poltergeist/"&gt;http://jonathanleighton.com/articles/2012/announcing-poltergeist/&lt;/a&gt;&lt;br /&gt;Rails core member Jon Leighton has just released Poltergeist, which is a driver for Capybara using PhantomJS (a headless browser) as the browser. Sounds pretty handy. &lt;p /&gt; &lt;a href="http://railscasts.com/episodes/312-sending-html-email"&gt;http://railscasts.com/episodes/312-sending-html-email&lt;/a&gt;&lt;br /&gt;Railscast on the best ways to send html emails in Rails, with a few helpful tools to make it a little less painful. &lt;p /&gt; &lt;a href="http://railscasts.com/episodes/313-receiving-email-with-mailman"&gt;http://railscasts.com/episodes/313-receiving-email-with-mailman&lt;/a&gt;&lt;br /&gt;Pro Railscast on how to programatically receive email with Mailman, which is an incoming email processing microframework. &amp;quot;Like Sinatra, but for email&amp;quot;. &lt;p /&gt; &lt;a href="http://tools.percona.com/"&gt;http://tools.percona.com/&lt;/a&gt;&lt;br /&gt;A mysql configuration generation wizard. Answer a few simple questions and get your mysql instance configured much more effectively. &lt;p /&gt;&lt;a href="http://blog.siyelo.com/machine-learning-in-ruby-statistic-classifica"&gt;http://blog.siyelo.com/machine-learning-in-ruby-statistic-classifica&lt;/a&gt;&lt;br /&gt; A simple-ish Machine Learning example built in ruby, to classify news articles. Nicely written code and clearly explained, this a nice read. &lt;p /&gt;&lt;a href="http://wekeroad.com/2012/01/03/rails-has-turned-me-into-a-cannibalizing-idiot/"&gt;http://wekeroad.com/2012/01/03/rails-has-turned-me-into-a-cannibalizing-idiot/&lt;/a&gt;&lt;br /&gt; There&amp;#39;s been quite a bit of Rails bashing lately, and how we&amp;#39;ve all forgotten OO and Rails is turning is into incompetent programmers (apparently). Rob Conery puts the world to rights in this excellent and funny blog post.
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-912012"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-912012#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/pOXPpe6-g4w" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-912012</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 19 Dec 2011 02:46:00 -0800</pubDate>
      <title>Ruby News Roundup 19/12/2011</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/Mv7uAhmJ3nM/ruby-news-roundup-19122011</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-19122011</guid>
      <description>&lt;p&gt;
	&lt;p&gt;It's nearly Christmas!!&lt;p /&gt; &lt;a href="http://www.mongomodel.org"&gt;http://www.mongomodel.org&lt;/a&gt;&lt;br /&gt;Another ORM for MongoDB that's designed to be compatible with Rails 3. It just reached version 0.4.3. It looks a lot like MongoMapper, anyone have any experience with it?&lt;p /&gt; &lt;a href="http://coffeescript.org/#changelog"&gt;http://coffeescript.org/#changelog&lt;/a&gt;&lt;br /&gt;Coffeescript version 1.2.0 has been released with a number of fixes. Most notably --watch and --join can be used together! &lt;p /&gt; &lt;a href="https://github.com/shutterstock/rickshaw"&gt;https://github.com/shutterstock/rickshaw&lt;/a&gt;&lt;br /&gt;Interactive real time graphs? Yes please. Check out the examples/index.html to see what it can do.&lt;p /&gt;&lt;a href="http://www.therubygame.com/"&gt;http://www.therubygame.com/&lt;/a&gt;&lt;br /&gt; Saw this on Friday and had to tweet about it. Great fun. Simple problem and see how fast you can get your code to run. It's really interesting to see the number of submissions for such a simple problem. Also funny to see how many people are cheating!&lt;p /&gt; &lt;a href="http://riakhandbook.com/"&gt;http://riakhandbook.com/&lt;/a&gt;&lt;br /&gt;@roidrage has been working on this night and day by the sounds of things and he knows his stuff! Can't wait to read this once my current book backlog has cleared up! Go buy it!&lt;p /&gt; &lt;a href="http://browserling.com/"&gt;http://browserling.com/&lt;/a&gt; + &lt;a href="http://testling.com/"&gt;http://testling.com/&lt;/a&gt;&lt;br /&gt;Two nice looking tools to help you with your cross browser testing. Hosted service, but there are free options.&lt;p /&gt; &lt;a href="https://github.com/stevegraham/slanger"&gt;https://github.com/stevegraham/slanger&lt;/a&gt;&lt;br /&gt;Slanger is an open source implementation of the hugely popular Pusherapp protocol. Very handy. &lt;p /&gt;&lt;a href="http://kyledrake.net/sinatra-synchrony/"&gt;http://kyledrake.net/sinatra-synchrony/&lt;/a&gt;&lt;br /&gt; Like Sinatra? Like the throughput of Evented webservers like Goliath? This project adds EventMachine + EM-Synchrony to Sinatra and uses Fibers to get the performance benefits of evented code, without the callback hell. Some very nice looking benchmarks for it too. &lt;p /&gt; &lt;a href="http://www.rubyinside.com/video-game-ruby-tutorial-5726.html"&gt;www.rubyinside.com/video-game-ruby-tutorial-5726.html&lt;/a&gt;&lt;br /&gt;Great article on how to get started with jRuby to write a simple game. I'll need some jRuby in my latest personal project so this should come in very handy indeed.&lt;p /&gt; &lt;a href="http://weblog.therealadam.com/2011/12/09/why-metaprogram-when-you-can-program/"&gt;http://weblog.therealadam.com/2011/12/09/why-metaprogram-when-you-can-program/&lt;/a&gt;&lt;br /&gt;Metaprogramming is great, but it can be a huge hinderance when learning a new codebase. This is a very handy guide on *when* to use it. &lt;p /&gt; &lt;a href="http://nicksda.apotomo.de/2011/12/ruby-on-rest-2-representers-and-the-dci-pattern/"&gt;http://nicksda.apotomo.de/2011/12/ruby-on-rest-2-representers-and-the-dci-pattern/&lt;/a&gt;&lt;br /&gt;The best explanation of DCI I've seen yet, models become "Fat on Demand". DCI seems to be gaining popularity as we in the Rails community re-discover our OO coding heritage.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;div class="data type-ruby"&gt;
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;span rel="#L11" id="L11"&gt;11&lt;/span&gt;
&lt;span rel="#L12" id="L12"&gt;12&lt;/span&gt;
&lt;span rel="#L13" id="L13"&gt;13&lt;/span&gt;
&lt;span rel="#L14" id="L14"&gt;14&lt;/span&gt;
&lt;span rel="#L15" id="L15"&gt;15&lt;/span&gt;
&lt;span rel="#L16" id="L16"&gt;16&lt;/span&gt;
&lt;span rel="#L17" id="L17"&gt;17&lt;/span&gt;
&lt;span rel="#L18" id="L18"&gt;18&lt;/span&gt;
&lt;span rel="#L19" id="L19"&gt;19&lt;/span&gt;
&lt;span rel="#L20" id="L20"&gt;20&lt;/span&gt;
&lt;span rel="#L21" id="L21"&gt;21&lt;/span&gt;
&lt;span rel="#L22" id="L22"&gt;22&lt;/span&gt;
&lt;span rel="#L23" id="L23"&gt;23&lt;/span&gt;
&lt;span rel="#L24" id="L24"&gt;24&lt;/span&gt;
&lt;span rel="#L25" id="L25"&gt;25&lt;/span&gt;
&lt;span rel="#L26" id="L26"&gt;26&lt;/span&gt;
&lt;span rel="#L27" id="L27"&gt;27&lt;/span&gt;
&lt;span rel="#L28" id="L28"&gt;28&lt;/span&gt;
&lt;span rel="#L29" id="L29"&gt;29&lt;/span&gt;
&lt;span rel="#L30" id="L30"&gt;30&lt;/span&gt;
&lt;span rel="#L31" id="L31"&gt;31&lt;/span&gt;
&lt;span rel="#L32" id="L32"&gt;32&lt;/span&gt;
&lt;span rel="#L33" id="L33"&gt;33&lt;/span&gt;
&lt;span rel="#L34" id="L34"&gt;34&lt;/span&gt;
&lt;span rel="#L35" id="L35"&gt;35&lt;/span&gt;
&lt;span rel="#L36" id="L36"&gt;36&lt;/span&gt;
&lt;span rel="#L37" id="L37"&gt;37&lt;/span&gt;
&lt;span rel="#L38" id="L38"&gt;38&lt;/span&gt;
&lt;span rel="#L39" id="L39"&gt;39&lt;/span&gt;
&lt;span rel="#L40" id="L40"&gt;40&lt;/span&gt;
&lt;span rel="#L41" id="L41"&gt;41&lt;/span&gt;
&lt;span rel="#L42" id="L42"&gt;42&lt;/span&gt;
&lt;span rel="#L43" id="L43"&gt;43&lt;/span&gt;
&lt;span rel="#L44" id="L44"&gt;44&lt;/span&gt;
&lt;span rel="#L45" id="L45"&gt;45&lt;/span&gt;
&lt;span rel="#L46" id="L46"&gt;46&lt;/span&gt;
&lt;span rel="#L47" id="L47"&gt;47&lt;/span&gt;
&lt;span rel="#L48" id="L48"&gt;48&lt;/span&gt;
&lt;span rel="#L49" id="L49"&gt;49&lt;/span&gt;
&lt;span rel="#L50" id="L50"&gt;50&lt;/span&gt;
&lt;span rel="#L51" id="L51"&gt;51&lt;/span&gt;
&lt;span rel="#L52" id="L52"&gt;52&lt;/span&gt;
&lt;span rel="#L53" id="L53"&gt;53&lt;/span&gt;
&lt;span rel="#L54" id="L54"&gt;54&lt;/span&gt;
&lt;span rel="#L55" id="L55"&gt;55&lt;/span&gt;
&lt;span rel="#L56" id="L56"&gt;56&lt;/span&gt;
&lt;span rel="#L57" id="L57"&gt;57&lt;/span&gt;
&lt;span rel="#L58" id="L58"&gt;58&lt;/span&gt;
&lt;span rel="#L59" id="L59"&gt;59&lt;/span&gt;
&lt;span rel="#L60" id="L60"&gt;60&lt;/span&gt;
&lt;span rel="#L61" id="L61"&gt;61&lt;/span&gt;
&lt;span rel="#L62" id="L62"&gt;62&lt;/span&gt;
&lt;span rel="#L63" id="L63"&gt;63&lt;/span&gt;
&lt;span rel="#L64" id="L64"&gt;64&lt;/span&gt;
&lt;span rel="#L65" id="L65"&gt;65&lt;/span&gt;
&lt;span rel="#L66" id="L66"&gt;66&lt;/span&gt;
&lt;span rel="#L67" id="L67"&gt;67&lt;/span&gt;
&lt;span rel="#L68" id="L68"&gt;68&lt;/span&gt;
&lt;span rel="#L69" id="L69"&gt;69&lt;/span&gt;
&lt;span rel="#L70" id="L70"&gt;70&lt;/span&gt;
&lt;span rel="#L71" id="L71"&gt;71&lt;/span&gt;
&lt;span rel="#L72" id="L72"&gt;72&lt;/span&gt;
&lt;span rel="#L73" id="L73"&gt;73&lt;/span&gt;
&lt;span rel="#L74" id="L74"&gt;74&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="c1"&gt;# From: https://gist.github.com/1471391&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;span class="c1"&gt;# Copyright José Valim 2011 MIT-LICENSE&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;active_support/core_ext/array/wrap&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;active_support/core_ext/array/extract_options&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC6"&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;fssm&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC7"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC8"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;FileWatcher&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC9"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dirs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{},&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC10"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="vi"&gt;@block&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC11"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="vi"&gt;@last_update_at&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;at&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC12"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="vi"&gt;@updated_at&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;at&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC13"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;start_monitor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dirs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;relative&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC14"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC15"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC16"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;updated?&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC17"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Error on FileWatcher. FSSM thread is dead.&amp;quot;&lt;/span&gt; &lt;span class="k"&gt;unless&lt;/span&gt; &lt;span class="vi"&gt;@thread&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;alive?&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC18"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="vi"&gt;@updated_at&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="vi"&gt;@last_update_at&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC19"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC20"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC21"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;execute_if_updated&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC22"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;updated?&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC23"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC24"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="kp"&gt;true&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC25"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC26"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="kp"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC27"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC28"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC29"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC30"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;execute&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC31"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="vi"&gt;@last_update_at&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="vi"&gt;@updated_at&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC32"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="vi"&gt;@block&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;call&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC33"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC34"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC35"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="kp"&gt;private&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC36"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC37"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC38"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;timestamp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mtime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC39"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="vi"&gt;@updated_at&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;timestamp&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;timestamp&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="vi"&gt;@updated_at&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC40"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC41"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC42"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;compile_glob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;exts&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC43"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;array&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;wrap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC44"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;**/*&amp;quot;&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;empty?&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC45"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="s2"&gt;&amp;quot;**/*.{&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;}&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC46"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC47"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC48"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;start_monitor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dirs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC49"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;exprs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Hash&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC50"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC51"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC52"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;exprs&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dirname&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;basename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC53"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC54"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC55"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;dirs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;exts&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC56"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;exprs&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;compile_glob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;exts&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC57"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC58"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC59"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;freeze&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC60"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;dirs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;freeze&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC61"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC62"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="vi"&gt;@monitor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;FSSM&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Monitor&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC63"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC64"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;exprs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;globs&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC65"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="vi"&gt;@monitor&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="n"&gt;dir&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC66"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;glob&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;{&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;globs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;}&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC67"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC68"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC69"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC70"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC71"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC72"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="vi"&gt;@thread&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Thread&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="vi"&gt;@monitor&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC73"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC74"&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/div&gt;&lt;br /&gt;Rails  3.2 will ship with a FileWatcher to only reload your application if any  of the files have changed. This gist from Jose Valim shows how to hook  it into other watching tools such as FSSM.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-19122011"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-19122011#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/Mv7uAhmJ3nM" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-19122011</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 12 Dec 2011 04:02:36 -0800</pubDate>
      <title>Ruby News Roundup 12/12/2011</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/tI4jD0aoLbM/ruby-news-roundup-12122011</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-12122011</guid>
      <description>&lt;p&gt;
	&lt;a href="https://github.com/seattlerb/minitest"&gt;https://github.com/seattlerb/minitest&lt;/a&gt;&lt;br /&gt;Minitest Version 2.9.0 has been released. It&amp;#39;s a really great, easy to read, fast testing framework that comes bundled with Ruby 1.9. If you haven&amp;#39;t tried it yet, you really should. &lt;p /&gt; &lt;a href="http://rubymanor.org/3/videos/"&gt;http://rubymanor.org/3/videos/&lt;/a&gt;&lt;br /&gt;The unbelievably excellent Ru3y Manor&amp;#39;s videos are up and available for your viewing pleasure. Get a beer and commence the knowledge absorbing. &lt;p /&gt; &lt;a href="http://confreaks.net/events/rubyconf2011"&gt;http://confreaks.net/events/rubyconf2011&lt;/a&gt;&lt;br /&gt;Confreaks have also recently released the videos for Ruby Conf! &lt;p /&gt;&lt;a href="https://github.com/robgleeson/ed"&gt;https://github.com/robgleeson/ed&lt;/a&gt;&lt;br /&gt; Interesting project that allows you a certain (small) subset of git commands to be used in a DSL. Could be pretty handy if you want to work with git programmatically.&lt;p /&gt;&lt;a href="http://yehudakatz.com/2011/12/08/announcing-amber-js/"&gt;http://yehudakatz.com/2011/12/08/announcing-amber-js/&lt;/a&gt;&lt;br /&gt; So some interesting news, Sproutcore has had a complete re-write for version 2, and a new name. Amber.js. I&amp;#39;ve not seen anything built with it yet, but the announcement makes it sound pretty interesting. &lt;p /&gt;&lt;a href="http://engineering.gomiso.com/2011/12/07/turn-ruby-code-into-simple-daemons-with-dante/"&gt;http://engineering.gomiso.com/2011/12/07/turn-ruby-code-into-simple-daemons-with-dante/&lt;/a&gt;&lt;br /&gt; New gem from the chaps at Miso, built to scratch their own architectural itch. It allows for easy and rather flexible creation of daemonized services.&lt;p /&gt;&lt;a href="http://www.enlightsolutions.com/articles/whats-new-in-edge-scoped-mass-assignment-in-rails-3-1/"&gt;http://www.enlightsolutions.com/articles/whats-new-in-edge-scoped-mass-assignment-in-rails-3-1/&lt;/a&gt;&lt;br /&gt; If you don&amp;#39;t use protection from mass-assignment, chances are you&amp;#39;ll end up in a world of hurt. Rails 3.1 introduced a little feature called scoped mass assignment; this article explains how to use it.&lt;p /&gt;&lt;a href="http://christianheilmann.com/2011/12/06/that-javascript-not-available-case/"&gt;http://christianheilmann.com/2011/12/06/that-javascript-not-available-case/&lt;/a&gt;&lt;br /&gt; Love this article. Excellently written on piece on why javascript may not be available and why you perhaps shouldn&amp;#39;t put all your application eggs in the javascripty basket.&lt;p /&gt;&lt;a href="http://www.reddit.com/r/linux/comments/mi80x/give_me_that_one_command_you_wish_you_knew_years/"&gt;http://www.reddit.com/r/linux/comments/mi80x/give_me_that_one_command_you_wish_you_knew_years/&lt;/a&gt;&lt;br /&gt; Very handy thread on Reddit about the commands we all wish we knew, its like having your own personal neckbeard of power. &lt;p /&gt;&lt;a href="http://rails-bestpractices.com/blog/posts/30-ann-rails_best_practices-1-6-0-released"&gt;http://rails-bestpractices.com/blog/posts/30-ann-rails_best_practices-1-6-0-released&lt;/a&gt;&lt;br /&gt; Rails best practices gem version 1.6.0 has been released including a few fixes and new features. Check it out if you want to check your application over for best practice support.&lt;p /&gt;&lt;a href="https://bitbucket.org/ged/ruby-pg/wiki/Home"&gt;https://bitbucket.org/ged/ruby-pg/wiki/Home&lt;/a&gt;&lt;br /&gt; the Ruby interface to postgres has just had version 0.12.0 released. Quite a few fixes in this release too.
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-12122011"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-12122011#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/tI4jD0aoLbM" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-12122011</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 06 Dec 2011 02:55:38 -0800</pubDate>
      <title>Ruby news Roundup 5/12/2011</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/ppbUNAi9pqw/ruby-news-roundup-5122011</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-5122011</guid>
      <description>&lt;p&gt;
	&lt;a href="http://amon.cx/"&gt;http://amon.cx/&lt;/a&gt;&lt;br /&gt;Amon is an application and system monitoring tools aimed at people who are, well, a little bit sick of monit et al and their complex configurations. Looks like it does everything you might need with a nice long feature list; System monitoring, Application Logging, Process Monitoring etc.&lt;p /&gt; &lt;a href="https://github.com/tchandy/octopus"&gt;https://github.com/tchandy/octopus&lt;/a&gt;&lt;br /&gt;I only just heard of octopus this week, but it looks like it&amp;#39;s been around for a while. It&amp;#39;s an AR compatible sharding gem, that has a lot of features, and it&amp;#39;s Rails 3 compatible. Supports; sharding, replication with master/slave support with multiple slaves.&lt;p /&gt; &lt;a href="https://github.com/rails/rails/commit/0306f82e0c3cda3aad1b45eb0c3a359c254b62cc"&gt;https://github.com/rails/rails/commit/0306f82e0c3cda3aad1b45eb0c3a359c254b62cc&lt;/a&gt;&lt;br /&gt;@fxn recently implemented auto EXPLAIN logging for slow queries with this commit. It&amp;#39;s aimed for Rails 3.2.0, and will be a pretty handy feature once it&amp;#39;s released.&lt;p /&gt; &lt;a href="http://railstips.org/blog/archives/2011/12/01/creating-an-api/"&gt;http://railstips.org/blog/archives/2011/12/01/creating-an-api/&lt;/a&gt;&lt;br /&gt;@orderedlist just yesterday announced that they had been acquired by github, one of their tools is @gaugesapp which is a great tool for real time web statistics. This blog post explains a little about how they created the API and why it&amp;#39;s done the way it is. Some useful knowledge here.&lt;p /&gt; &lt;a href="http://movethewebforward.org/"&gt;http://movethewebforward.org/&lt;/a&gt;&lt;br /&gt;Great list of resources for how to learn about the latest browser based goodness.&lt;p /&gt;&lt;a href="https://github.com/thoughtbot/backbone-support"&gt;https://github.com/thoughtbot/backbone-support&lt;/a&gt;&lt;br /&gt; Thoughtbot are doing a lot with Backbone it seems, they have just released a book on their best practices on how to use it, and this code + example application on how to use these patterns.&lt;p /&gt;&lt;a href="http://rhnh.net/2011/11/29/datamapper-retrospective"&gt;http://rhnh.net/2011/11/29/datamapper-retrospective&lt;/a&gt;&lt;br /&gt; Xavier Shay is a bit of an expert when it comes to Databases, so it&amp;#39;s wise to listen to what he says. He&amp;#39;s just blogged a retrospective on working with Datamapper and it&amp;#39;s pro&amp;#39;s and con&amp;#39;s.&lt;p /&gt;&lt;a href="http://railscasts.com/episodes/305-authentication-with-warden"&gt;http://railscasts.com/episodes/305-authentication-with-warden&lt;/a&gt;&lt;br /&gt; There was a new pro episode of Railscasts out yesterday about authentication with Warden.&lt;p /&gt;&lt;a href="http://benoithamelin.tumblr.com/ruby1line"&gt;http://benoithamelin.tumblr.com/ruby1line&lt;/a&gt;&lt;br /&gt;This is a Ruby translation of the very excellent Awk 1 Liners. Crazy code within!
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-5122011"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-5122011#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/ppbUNAi9pqw" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-5122011</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 28 Nov 2011 01:42:38 -0800</pubDate>
      <title>Ruby News Roundup 28/11/2011</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/tz1nC4idnM4/ruby-news-roundup-28112011</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-28112011</guid>
      <description>&lt;p&gt;
	&lt;a href="https://github.com/devthenet/voyeur"&gt;https://github.com/devthenet/voyeur&lt;/a&gt;&lt;br /&gt;Handy little library that wraps ffmpeg with a nice API letting you convert most video formats to HTML5 compatible ones. &lt;p /&gt;&lt;a href="http://patshaughnessy.net/2011/11/23/finding-your-soulmate-autocomplete-with-redis-in-rails-3-1"&gt;http://patshaughnessy.net/2011/11/23/finding-your-soulmate-autocomplete-with-redis-in-rails-3-1&lt;/a&gt;&lt;br /&gt; A clever looking autocomplete gem that uses redis for super fast lookups. This article explains how to get up and running with it. A future article will explain how the internals work.&lt;p /&gt;&lt;a href="http://leaverou.github.com/animatable/"&gt;http://leaverou.github.com/animatable/&lt;/a&gt;&lt;br /&gt; Test page for animatable css properties. Rather cool!&lt;p /&gt;&lt;a href="http://pakyow.com/"&gt;http://pakyow.com/&lt;/a&gt;&lt;br /&gt;Pakyow version 0.7 has just been released. If you haven&amp;#39;t heard of it (I hadn&amp;#39;t), it&amp;#39;s a web framework for Ruby that &amp;quot;lets data be data, views be views, and code be code&amp;quot;. What that means exactly, I don&amp;#39;t know. I&amp;#39;m going to take a bit more of a look at this soon. &lt;p /&gt; &lt;a href="http://bitwiseshiftleft.github.com/sjcl/"&gt;http://bitwiseshiftleft.github.com/sjcl/&lt;/a&gt;&lt;br /&gt;Need cryptography in your javascript? Stanford have released an open source crypto library to solve that very problem. &lt;p /&gt; &lt;a href="http://kresimirbojcic.com/2011/11/19/dependency-injection-in-ruby.html"&gt;http://kresimirbojcic.com/2011/11/19/dependency-injection-in-ruby.html&lt;/a&gt;&lt;br /&gt;Think dependency injection is overkill for a Ruby project? Well, maybe it is, maybe it isn&amp;#39;t, but this article shows two variants, setter injection and constructor injection. Useful to know. &lt;p /&gt; &lt;a href="http://yehudakatz.com/2011/11/19/how-to-marshal-procs-using-rubinius/"&gt;http://yehudakatz.com/2011/11/19/how-to-marshal-procs-using-rubinius/&lt;/a&gt;&lt;br /&gt;Yehuda Katz shows off some more cool features of Rubinius, more specifically, how the internals of Rubinius are exposed into Ruby and how that can be used to marshal Proc&amp;#39;s. Make sure you read the comments as well as there is some good debate from JRuby&amp;#39;s Charles Nutter about whether this should actually be done. &lt;p /&gt; &lt;a href="http://weblog.rubyonrails.org/2011/11/20/rails-3-1-3-has-been-released"&gt;http://weblog.rubyonrails.org/2011/11/20/rails-3-1-3-has-been-released&lt;/a&gt;&lt;br /&gt;Bit slow to the party with this one, but Rails 3.1.3 has been released with a veritable slew of fixes &lt;a href="https://github.com/rails/rails/compare/v3.1.2...v3.1.3"&gt;https://github.com/rails/rails/compare/v3.1.2...v3.1.3&lt;/a&gt;&lt;p /&gt; &lt;a href="http://rubysource.com/crafting-rubies-best-practices-while-cutting-gems/"&gt;http://rubysource.com/crafting-rubies-best-practices-while-cutting-gems/&lt;/a&gt;&lt;br /&gt;Very nice guide on the best practices when making your own gems.&lt;p /&gt; &lt;a href="http://blog.codeschool.com/post/13159446212/jquery-air"&gt;http://blog.codeschool.com/post/13159446212/jquery-air&lt;/a&gt;&lt;br /&gt;Codeschool are doing great work on educating software developers with brilliant screencasts and excellent in browser exercises. They&amp;#39;ve just released JQuery Air for free! So go and give it a go!
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-28112011"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-28112011#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/tz1nC4idnM4" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-28112011</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 14 Nov 2011 01:42:00 -0800</pubDate>
      <title>Ruby News Roundup 14/11/2011</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/_7vM-FmiaHc/ruby-news-roundup-14112011</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-14112011</guid>
      <description>&lt;p&gt;
	&lt;p&gt;&lt;a href="http://www.rubyinside.com/the-ruby-standard-library-to-be-converted-to-gems-for-ruby-2-0-5586.html"&gt;http://www.rubyinside.com/the-ruby-standard-library-to-be-converted-to-gems-for-ruby-2-0-5586.html&lt;/a&gt;&lt;br /&gt;Nice explanation over at Ruby Inside about why gemifying the Ruby Standard Library might be happening in Ruby 2.0.&lt;p /&gt; &lt;a href="http://stackoverflow.com/questions/8044303/reference-checklist-for-starting-a-new-rails-application"&gt;http://stackoverflow.com/questions/8044303/reference-checklist-for-starting-a-new-rails-application&lt;/a&gt;&lt;br /&gt; Daniel Kehoe, owner of @rails_apps asked the question "What's your checklist for starting a new Rails application" on SO the other day. Useful info if you're just starting a new rails app. &lt;p /&gt;&lt;a href="http://neilmiddleton.com/getting-more-from-your-heroku-dynos/"&gt;http://neilmiddleton.com/getting-more-from-your-heroku-dynos/&lt;/a&gt;&lt;br /&gt; This is a handy tip to know about. On the new @heroku stack, cedar, you specify a Procfile which lets you choose what processes are running on your dyno. Now this is very useful as it allows you to switch from the default thin webserver to something more unixy like Unicorn. &lt;p /&gt; &lt;a href="https://github.com/juuso/BozoCrack"&gt;https://github.com/juuso/BozoCrack&lt;/a&gt;&lt;br /&gt;Not really news this, but it's funny. Think MD5 is secure? Well this tiny Ruby script will crack your md5 hash without using barely any of your CPU resources! How? Google.&lt;p /&gt; &lt;a href="http://avdi.org/talks/confident-code-rubymidwest-2011/"&gt;http://avdi.org/talks/confident-code-rubymidwest-2011/&lt;/a&gt;&lt;br /&gt;Links to a video and slides from @avdi's talk on "Confident Code" at Ruby Midwest. I've not watched the talk, but the articles he links to are really interesting. Definitely check this out.&lt;p /&gt; &lt;a href="http://worrydream.com/ABriefRantOnTheFutureOfInteractionDesign/"&gt;http://worrydream.com/ABriefRantOnTheFutureOfInteractionDesign/&lt;/a&gt;&lt;br /&gt;Not the usual sort of think I link to, but a really interesting read nonetheless! Think your iPhone is the future of how we interact with devices? Read this :)&lt;p /&gt; &lt;a href="http://coffeescript.org/#change_log"&gt;http://coffeescript.org/#change_log&lt;/a&gt;&lt;br /&gt;Coffeescript hit version 1.1.3 a few small fixes here and there. A nice one is that there is effort going into keeping the outputted Javascript readable.&lt;p /&gt; &lt;a href="http://groups.google.com/group/thinking-sphinx/browse_thread/thread/e4530bd56c849253"&gt;groups.google.com/group/thinking-sphinx/browse_thread/thread/e4530bd56c849253&lt;/a&gt;&lt;br /&gt;@pat has written a quick note on the Thinking Sphinx mailing list about some big upcoming changes. Make sure you read this is you use the repository in your Gemfile.&lt;p /&gt; &lt;a href="https://github.com/bradphelan/jasminerice/"&gt;https://github.com/bradphelan/jasminerice/&lt;/a&gt;&lt;br /&gt;Some of you may have seen me ranting last week about getting Jasmine up and running. We had a bit of a tricky case: Rails 3.1, Coffeescript + Backbone.js and it was a bit of a pain to get started with. Jasmine Rice took away most of that pain, insofar as it actually worked as advertised. I've still yet to get it running headlessly.&lt;p /&gt; &lt;a href="https://groups.google.com/forum/#!msg/thin-ruby/YSz3xZQr9qI/575jtZMPtb0J"&gt;https://groups.google.com/forum/#!msg/thin-ruby/YSz3xZQr9qI/575jtZMPtb0J&lt;/a&gt;&lt;br /&gt;Thin webserver hit version 1.3.0 with a few changes. Hit the link for the change log.&lt;p /&gt; &lt;a href="https://github.com/flyerhzm/rails_best_practices"&gt;https://github.com/flyerhzm/rails_best_practices&lt;/a&gt;&lt;br /&gt;The Rails Best Practices code metric tool just reached version 1.3.0 as well (coincidence eh?). This tool will tell you where and how often you are using non standard methods. Handy.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-14112011"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-14112011#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/_7vM-FmiaHc" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-14112011</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 07 Nov 2011 00:48:57 -0800</pubDate>
      <title>Ruby News Roundup 7-11-2011</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/-kI1HzXb1lE/ruby-news-roundup-7-11-2011</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-7-11-2011</guid>
      <description>&lt;p&gt;
	&lt;a href="http://iain.nl/backends-in-rails-3-1"&gt;http://iain.nl/backends-in-rails-3-1&lt;/a&gt;&lt;br /&gt;Making your own administration interface in Rails is pretty easy; this blog post will explain how in great detail.&lt;p /&gt;&lt;a href="http://simsalabim.github.com/sisyphus/"&gt;http://simsalabim.github.com/sisyphus/&lt;/a&gt;&lt;br /&gt; Relatively new little javascript library to persist partially filled in forms, like Gmail and restore them when the browser is re-opened. Handy.&lt;p /&gt;&lt;a href="http://subinterest.com/rubies-in-the-rough"&gt;http://subinterest.com/rubies-in-the-rough&lt;/a&gt;&lt;br /&gt; @JEG2 has recently started a Ruby Publication, 3 times a month for $6. I haven&amp;#39;t subscribed just yet, but am going to keep an eye on the articles abstracts and see if they&amp;#39;re worth reading. Has anyone subscribed yet?&lt;p /&gt; &lt;a href="http://martinfowler.com/bliki/OpportunisticRefactoring.html"&gt;http://martinfowler.com/bliki/OpportunisticRefactoring.html&lt;/a&gt;&lt;br /&gt;When do you refactor? As and when you see a problem? Excellent! Carry on. If not, then take a quick read of this article as to why you should.&lt;p /&gt; &lt;a href="https://github.com/MagLev/maglev"&gt;https://github.com/MagLev/maglev&lt;/a&gt;&lt;br /&gt;Wow, Maglev has hit 1.0. What is it? It&amp;#39;s an open source implementation of Ruby built atop VMware&amp;#39;s Gemstone virtual machine. It was very much hyped when announced due to it&amp;#39;s ability to persist objects between VM&amp;#39;s. Should be interesting to see how this performs. &lt;p /&gt; &lt;a href="http://www.engineyard.com/blog/2011/sass-compass-and-the-rails-3-1-asset-pipeline/"&gt;http://www.engineyard.com/blog/2011/sass-compass-and-the-rails-3-1-asset-pipeline/&lt;/a&gt;&lt;br /&gt;There&amp;#39;s been a lot of blog posts lately about the Asset Pipeline and rightly so as it&amp;#39;s pretty awesome. However, it&amp;#39;s performance in development mode isn&amp;#39;t great due to it reloading the entire Rails stack on each asset request. This article has a lot of detail about the pipeline, but the development section is very handy indeed.&lt;p /&gt; &lt;a href="http://devopsanywhere.blogspot.com/2011/10/month-with-chef.html"&gt;http://devopsanywhere.blogspot.com/2011/10/month-with-chef.html&lt;/a&gt;&lt;br /&gt;Long blog post written by Bryan Berry on his first month with chef. I haven&amp;#39;t read this yet, but it looks like a good, well detailed read. One that will hopefully shed some light on how you actually use the damn thing :)
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-7-11-2011"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-7-11-2011#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/-kI1HzXb1lE" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-7-11-2011</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 31 Oct 2011 02:27:00 -0700</pubDate>
      <title>Ruby News Roundup 31/10/2011</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/K8XmA_akBDE/ruby-news-roundup-31102011</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-31102011</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Nothing spooky about the news this Halloween I'm afraid! Other than perhaps the Ghoul library, but that's all about Git so it's not too scary. &lt;p /&gt;&lt;/p&gt;
&lt;div style=""&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/wooga/1000000-daily-users-and-no-cache-splash-2011" title="1,000,000 daily users and no cache (Splash 2011)" target="_blank"&gt;1,000,000 daily users and no cache (Splash 2011)&lt;/a&gt;&lt;/strong&gt; &lt;iframe scrolling="no" marginheight="0" marginwidth="0" src="http://www.slideshare.net/slideshow/embed_code/9875360" frameborder="0" height="355" width="425"&gt;&lt;/iframe&gt;
&lt;div style="padding: 5px 0 12px;"&gt;View more presentations from &lt;a href="http://www.slideshare.net/wooga" target="_blank"&gt;wooga&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt; Wooga give a talk about how they scaled their Rails backed flash apps to a million daily users. Hint... a crap load of servers and Redis. &lt;p /&gt;&lt;a href="https://github.com/likely/aho_corasick"&gt;https://github.com/likely/aho_corasick&lt;/a&gt;&lt;br /&gt; The incredibly clever Tim Cowlishaw has made an implementation of the Aho Corasick string matching algorithm in Ruby. If you need to match a lot of strings, this is what you'll want to use. Code is worth a read too as it's very nicely written.&lt;p /&gt; &lt;a href="http://arrrrcamp.be/videos/2011/corey-haines---fast-rails-tests/"&gt;http://arrrrcamp.be/videos/2011/corey-haines---fast-rails-tests/&lt;/a&gt;&lt;br /&gt;Video of Corey Haines giving his faster Rails tests talk at arrrcamp. If you haven't seen anything about the faster tests going around, watch this as it will explain it nicely.&lt;p /&gt; &lt;a href="http://www.ruby-lang.org/en/news/2011/10/31/ruby-1-9-3-p0-is-released/"&gt;http://www.ruby-lang.org/en/news/2011/10/31/ruby-1-9-3-p0-is-released/&lt;/a&gt;&lt;br /&gt;The latest stable version of Ruby 1.9 is out. Supposed to fix a few bugs, and has a load of new features: &lt;a href="http://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_0/NEWS"&gt;http://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_0/NEWS&lt;/a&gt;&lt;p /&gt; &lt;a href="http://railscasts.com/episodes/292-virtual-machines-with-vagrant"&gt;http://railscasts.com/episodes/292-virtual-machines-with-vagrant&lt;/a&gt;&lt;br /&gt;Vagrant is a&amp;nbsp; very nice, and pretty easy to use tool that lets you set up virtual machines on your local development machine. Why? well, in case you have a different set up in production that you can't reproduce very easily on your shiny mac.. or something.&lt;p /&gt; &lt;a href="http://georgedrummond.github.com/ghoul/"&gt;http://georgedrummond.github.com/ghoul/&lt;/a&gt;&lt;br /&gt;Ghoul is a pretty interface for your local git repositories.&lt;p /&gt;&lt;a href="http://robots.thoughtbot.com/post/11957424161/test-rake-tasks-like-a-boss"&gt;http://robots.thoughtbot.com/post/11957424161/test-rake-tasks-like-a-boss&lt;/a&gt;&lt;br /&gt; The chaps over at Thoughtbot have written a nice article on how to test your rake tasks. You are testing them right?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-31102011"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-31102011#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/K8XmA_akBDE" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-31102011</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 24 Oct 2011 01:08:00 -0700</pubDate>
      <title>Ruby News Roundup 24/10/2011</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/OXrcW1qo9Gs/ruby-news-roundup-24102011</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-24102011</guid>
      <description>&lt;p&gt;
	&lt;p&gt;https://&lt;a href="http://github.com/bbatsov/rails-style-guide"&gt;github.com/bbatsov/rails-style-guide&lt;/a&gt;&lt;br /&gt;An unofficial Rails 3 Style guide. There's some good general advice in here, but as always take style guides with a pinch of salt and do what makes sense. &lt;p /&gt; &lt;a href="http://www.rubyinside.com/ruby-2-0-implementation-work-begins-what-is-ruby-2-0-and-whats-new-5515.html"&gt;www.rubyinside.com/ruby-2-0-implementation-work-begins-what-is-ruby-2-0-and-whats-new-5515.html&lt;/a&gt;&lt;br /&gt;Ruby 2.0 is now in Ruby Trunk, which means it's under development. Peter Cooper has written a guide to what we could potentially expect to see in 2.0&lt;p /&gt; &lt;a href="http://www.codeschool.com/"&gt;http://www.codeschool.com/&lt;/a&gt;&lt;br /&gt;Rails for Zombies 2 has been released at the brilliant Code School. I had a play with the Rails Best Practices course the other day and it was really good fun and easy to learn so if Rails for Zombies is anything like that it should be a very useful resource for people wanting to learn Rails. &lt;p /&gt; &lt;a href="http://avdi.org/devblog/2011/10/20/drying-up-your-validations-using-db-reflection"&gt;avdi.org/devblog/2011/10/20/drying-up-your-validations-using-db-reflection&lt;/a&gt;&lt;br /&gt;This is a nice little tip from Avdi Grimm. Normally Active Record will truncate values that are too long to fit in the column, with this tip it'll show how to add a validation to prevent it. &lt;p /&gt; &lt;a href="http://opensoul.org/blog/archives/2011/10/19/why-another-queuing-library/"&gt;http://opensoul.org/blog/archives/2011/10/19/why-another-queuing-library/&lt;/a&gt;&lt;br /&gt;Qu was released last week, and here Brandon Keepers explains, why yet another queueing library was needed. I had a look at it, and the code and it's a really nice looking library. I think I'll probably give this a go when I next need a queue. &lt;p /&gt; &lt;a href="http://www.codelord.net/2011/10/18/til-ruby-classes-that-look-callable/"&gt;http://www.codelord.net/2011/10/18/til-ruby-classes-that-look-callable/&lt;/a&gt;&lt;br /&gt;Want to learn how to make Integer(1) return 1? No I wasn't sure either, but it's an interesting tale nontheless about how Ruby's Constants and Methods are looked up. &lt;p /&gt; &lt;a href="http://mir.aculo.us/2011/10/21/behind-the-scenes-at-charm-part-1-ruby-libraries/"&gt;http://mir.aculo.us/2011/10/21/behind-the-scenes-at-charm-part-1-ruby-libraries/&lt;/a&gt;&lt;br /&gt;The start of a 5 part series of articles about what's behind Thomas Fuchs' latest app Charm. Interesting to note that they had problems with memory leaks on Rails 3.. anyone else experienced this?&lt;p /&gt; &lt;a href="http://www.shopify.com/technology/4321572-most-memory-leaks-are-good"&gt;http://www.shopify.com/technology/4321572-most-memory-leaks-are-good&lt;/a&gt;&lt;br /&gt;On the subject of memory leaks...Shopify have written a very useful article on how to debug memory leaks in Ruby. Keep this one bookmarked for when you hit that horrible wall.&lt;p /&gt; &lt;strong&gt;Learnings&lt;/strong&gt;&lt;p /&gt;Spotted this over at the change log after seeing it on Engine Yard's Rails 3.1&amp;nbsp; support announcement. So this will make a single ALTER TABLE statement rather than one per change.&lt;p /&gt;change_table(:users, :bulk =&amp;gt; true) do |t|&lt;br /&gt; &amp;nbsp; t.string :company_name&lt;/p&gt;
&lt;p&gt;&amp;nbsp; t.change :birthdate, :datetime&lt;/p&gt;
&lt;p&gt;end&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-24102011"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-24102011#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/OXrcW1qo9Gs" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-24102011</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 20 Oct 2011 08:35:00 -0700</pubDate>
      <title>Rails 3 respond_with :json including nested associations</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/REotWyqg5ys/rails-3-respondwith-json-including-nested-ass</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/rails-3-respondwith-json-including-nested-ass</guid>
      <description>&lt;p&gt;
	&lt;p&gt;So we have an app that consumes JSON written in Backbone.js and it needed a bit more information from the Rails backend which was stored in an associated model. I couldn't find any good guides on how to get this to work, so I thought I'd write a little something to remind myself. &lt;p /&gt; Controller:&lt;br /&gt;&lt;code&gt;
respond_to :html, :json
...
@things = load_things
respond_with(@things) do |format|
&amp;nbsp; format.json{ render :json =&amp;gt; @things.collect{|thing| thing.as_json(:include =&amp;gt; { :nested_1 =&amp;gt; { :include =&amp;gt; :nested_2 } } ) } }
 end&amp;nbsp; 
&lt;/code&gt;&lt;p /&gt;Model&lt;br /&gt;&lt;code&gt;
class Thing &amp;lt; ActiveRecord::Base
&amp;nbsp; def as_json(opts={})
&amp;nbsp; #customise your json representation in here
&amp;nbsp; end
end
&lt;/code&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/rails-3-respondwith-json-including-nested-ass"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/rails-3-respondwith-json-including-nested-ass#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/REotWyqg5ys" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/rails-3-respondwith-json-including-nested-ass</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 17 Oct 2011 01:57:00 -0700</pubDate>
      <title>Ruby News Roundup 17/10/2011</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/oUTerOqP4E8/ruby-news-roundup-17102011</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-17102011</guid>
      <description>&lt;p&gt;
	&lt;p&gt;&lt;a href="http://pragprog.com/book/rr2/rails-recipes"&gt;http://pragprog.com/book/rr2/rails-recipes&lt;/a&gt;&lt;br /&gt;The very excellent Rails Recipes for Rails 3.1 is now out in beta. Grab it and start learning.&lt;p /&gt;&lt;iframe scrolling="no" marginheight="0" marginwidth="0" src="http://www.slideshare.net/slideshow/embed_code/9658386" frameborder="0" height="355" width="425"&gt;&lt;/iframe&gt; &lt;br /&gt; @jwo gave a talk at Houston.rb about how you should test, and how to make your tests go faster. Some really good advice in there, well worth a read. &lt;p /&gt;&lt;a href="http://www.jbrains.ca/permalink/not-just-slow-integration-tests-are-a-vortex-of-doom"&gt;http://www.jbrains.ca/permalink/not-just-slow-integration-tests-are-a-vortex-of-doom&lt;/a&gt;&lt;br /&gt; On the subject of testing; integration tests are a vortex of doom apparently.. well a scam at best if you don't know how to write them properly. The problem is that, as they aren't focused object tests, you will (probably) introduce dependencies in your code which will hurt you later on if you only rely on integration tests. My advice is, use them as a starting point to a feature, then use highly focused unit tests to drive the actual design of your code. &lt;p /&gt; &lt;a href="https://github.com/rails/rails/commit/85b64f98d100d37b3a232c315daa10fad37dccdc"&gt;https://github.com/rails/rails/commit/85b64f98d100d37b3a232c315daa10fad37dccdc&lt;/a&gt;&lt;br /&gt;@dhh tweet this the other day, that in Rails 3.2 there will be a ActiveRecord::Base.store for declaring single column simple key value stores. Interesting. &lt;p /&gt; &lt;a href="http://bostonrb.org/presentations/month/October-2011"&gt;http://bostonrb.org/presentations/month/October-2011&lt;/a&gt;&lt;br /&gt;I haven't watched these yet, but the topics do look interesting so I thought I'd share. I'll watch them soon and update this link.&lt;p /&gt; &lt;a href="https://github.com/browsermedia/browsercms/issues/448"&gt;https://github.com/browsermedia/browsercms/issues/448&lt;/a&gt;&lt;br /&gt;BrowserCMS looks like quite an interesting CMS as they go, and this fix allows it to be used in a Rails 3.1 app as an engine. Might be worth a looksee&lt;p /&gt; &lt;a href="http://www.engineyard.com/blog/2011/ruby-concurrency-and-you/"&gt;http://www.engineyard.com/blog/2011/ruby-concurrency-and-you/&lt;/a&gt;&lt;br /&gt;One of the best explanations of concurrency vs parallelism that I've ever read, and a nice summary of where the Ruby VM's are with the two concepts.&lt;p /&gt; &lt;a href="http://www.reneerb.com/"&gt;http://www.reneerb.com/&lt;/a&gt;&lt;br /&gt;Rennee is a new Rack framework.&amp;nbsp; It's aim is to provide a light weight dsl for web applications, but to still be very powerful. I won't lie, I'm not convinced, from the examples given it's syntax doesn't look very clean and it's mixing concerns of routing, controller code and rendering. &lt;p /&gt; &lt;a href="http://robots.thoughtbot.com/post/11437609921/factory-girl-2-2-your-new-best-friend"&gt;http://robots.thoughtbot.com/post/11437609921/factory-girl-2-2-your-new-best-friend&lt;/a&gt;&lt;br /&gt;Factory Girl is getting a lot of love lately, and this update is no exception there's some nice stuff in this update so take a look. &lt;p /&gt; On a different note, I had the pleasure of attending @magrails on Friday and I just wanted to say a big thanks to the organisers who did such a good job. It was a really great well-run conference and I met a load of interesting people. &lt;br /&gt; Hopefully the slides and video of the talks will be up soon so keep an eye on &lt;a href="http://magrails.com"&gt;magrails.com&lt;/a&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-17102011"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-17102011#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/oUTerOqP4E8" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-17102011</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 10 Oct 2011 02:48:13 -0700</pubDate>
      <title>Fixing Turn to show complete backtrace</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/miTBOcl02cU/fixing-turn-to-show-complete-backtrace</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/fixing-turn-to-show-complete-backtrace</guid>
      <description>&lt;p&gt;
	Turn is a gem that&amp;#39;s included by default in new Rails apps and it makes the test output much prettier than the standard, however it does have a habit of swallowing backtraces. To fix this (yes I know I should submit a patch, and I will when I get time)&lt;p /&gt; 1) bundle show turn&lt;p /&gt;2) open up the turn gem in your editor&lt;p /&gt;3) for Test Unit/Minitest users edit minitest.rb and change:&lt;p /&gt;&lt;code&gt;
102. trace = MiniTest::filter_backtrace(report[:exception].backtrace).first
 &lt;/code&gt;&lt;p /&gt;to&lt;p /&gt;&lt;code&gt;
 102. trace = MiniTest::filter_backtrace(report[:exception].backtrace).join(&amp;quot;\n&amp;quot;)
 &lt;/code&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/fixing-turn-to-show-complete-backtrace"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/fixing-turn-to-show-complete-backtrace#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/miTBOcl02cU" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/fixing-turn-to-show-complete-backtrace</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 10 Oct 2011 01:22:49 -0700</pubDate>
      <title>Ruby News Roundup 10/10/2011</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/q-hwvZQLn64/ruby-news-roundup-10102011</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-10102011</guid>
      <description>&lt;p&gt;
	&lt;a href="http://weblog.rubyonrails.org/2011/10/7/ann-rails-3-1-1"&gt;weblog.rubyonrails.org/2011/10/7/ann-rails-3-1-1&lt;/a&gt;&lt;br /&gt;Rails 3.1.1 has been released! Hot on the heels of the massive 3.1.0 release comes a release full of more bug fix-y goodness.&lt;p /&gt; &lt;a href="http://confreaks.net/events/rockymtnruby2011"&gt;http://confreaks.net/events/rockymtnruby2011&lt;/a&gt;&lt;br /&gt;Confreaks have put up the talks from Rock Mountain Ruby 2011, there&amp;#39;s some interesting looking talks there. Might take a while to watch all of them though!&lt;p /&gt; &lt;a href="http://jeffkreeftmeijer.com/2011/microgems-five-minute-rubygems/"&gt;http://jeffkreeftmeijer.com/2011/microgems-five-minute-rubygems/&lt;/a&gt;&lt;br /&gt;Micro rubygems using Github Gists. Quite a cunning little tactic this, not sure how err sensible it is, but well good to know about. Interesting that a Gist is actually a full git repo.&lt;p /&gt; &lt;a href="http://railscasts.com/"&gt;http://railscasts.com/&lt;/a&gt;&lt;br /&gt;Railscasts has undergone a bit of a change of late. There is now a Railscasts pro which contains longer, more detailed episodes, and there are now revised episodes that have been brought up to date. Nice work Ryan! &lt;p /&gt; &lt;a href="https://www.ruby-toolbox.com/"&gt;https://www.ruby-toolbox.com/&lt;/a&gt;&lt;br /&gt;Ruby toolbox has also been given a facelift, and some new features (list here: &lt;a href="https://www.ruby-toolbox.com/blog/2011/10/07/The_new_Ruby_Toolbox_is_ready"&gt;https://www.ruby-toolbox.com/blog/2011/10/07/The_new_Ruby_Toolbox_is_ready&lt;/a&gt;), including a search! &lt;p /&gt; &lt;a href="http://devopsanywhere.blogspot.com/2011/10/puppet-vs-chef-fight.html"&gt;http://devopsanywhere.blogspot.com/2011/10/puppet-vs-chef-fight.html&lt;/a&gt;&lt;br /&gt;Puppet and Chef to my eyes do very similar things (caveat; I&amp;#39;ve never used them, so please correct me if I&amp;#39;m wrong). This article lists a nice comparison between the two devops tools.&lt;p /&gt; &lt;a href="http://www.wedesoft.demon.co.uk/hornetseye-api/"&gt;http://www.wedesoft.demon.co.uk/hornetseye-api/&lt;/a&gt;&lt;br /&gt;A &amp;quot;Real time computer vision library&amp;quot; for Ruby! Sounds kinda cool. Feature list looks pretty good with feature detection, image and video manipulation. Might have to have a quick play with this! &lt;p /&gt; &lt;a href="http://www.engineyard.com/blog/2011/cache-money-why-utilize-caching/"&gt;http://www.engineyard.com/blog/2011/cache-money-why-utilize-caching/&lt;/a&gt;&lt;br /&gt;A quick overview of some caching options you can use in your projects to get things super speedy.
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-10102011"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-10102011#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/q-hwvZQLn64" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-10102011</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 20 Sep 2011 06:41:00 -0700</pubDate>
      <title>Testing 404/500 error pages in development in Rails 3.1</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/akS3EEj5zgI/testing-404500-error-pages-in-development-in</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/testing-404500-error-pages-in-development-in</guid>
      <description>&lt;p&gt;
	&lt;p&gt;If you want to add some fancy pants custom error pages to your app in Rails 3.1, you'll run into a little trouble due to some funky Rack Middleware routing isses (at least for the 404 page). However, the default static html pages served up by Rails will probably be ok. Still, testing these in development was a little painful, so I thought I'd share how I got it to work. &lt;p /&gt; Create a file in config/initializers called local_request.rb (or whatever) and add the following content:&lt;p /&gt;&lt;script src="https://gist.github.com/1229075.js?file=local_request.rb"&gt;&lt;/script&gt;&lt;p /&gt; I'm sure you're all screaming, "but wait! what about consider_all_requests_local = false", well that would be nice, but it's broken. &lt;p /&gt;&lt;script src="https://gist.github.com/1229075.js?file=show_exceptions.rb"&gt;&lt;/script&gt;&lt;p /&gt; If you set it to false, it will still defer to the request.local? and, if, like me you're accessing your site on your local machine, this will return true.&lt;p /&gt;Hope that helps&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/testing-404500-error-pages-in-development-in"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/testing-404500-error-pages-in-development-in#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/akS3EEj5zgI" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/testing-404500-error-pages-in-development-in</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 19 Sep 2011 01:17:58 -0700</pubDate>
      <title>Ruby News Roundup 19-09-2011</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/SzFMj05ot8k/ruby-news-roundup-19-09-2011</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/ruby-news-roundup-19-09-2011</guid>
      <description>&lt;p&gt;
	&lt;a href="http://backstage.soundcloud.com/2011/09/mobile-unit-testing/"&gt;http://backstage.soundcloud.com/2011/09/mobile-unit-testing/&lt;/a&gt;&lt;br /&gt;How Soundcloud test their mobile version of soundcloud. Nice story of the tools they use for JS unit testing, and the bad things they found with the tools they chose. I don&amp;#39;t really agree with them lumping their own temporal dependencies in their tests into the bad section. If anything that&amp;#39;s a good feature as the tool highlighted a deficiency in their tests.&lt;p /&gt; &lt;a href="http://tinkerbin.com/"&gt;http://tinkerbin.com/&lt;/a&gt;&lt;br /&gt;Nice looking tool, a bit like js-fiddle, that lets you play around with JS and also HTML with HAML, Coffeescript. &lt;p /&gt;&lt;a href="http://bostonrb.org/presentations/month/September-2011"&gt;http://bostonrb.org/presentations/month/September-2011&lt;/a&gt;&lt;br /&gt; The Boston ruby group, have put up the videos from their September meetup, this month it&amp;#39;s a collection of videos on testing, and testing tools! &lt;p /&gt;&lt;a href="http://weblog.rubyonrails.org/2011/9/15/ann-rails-3-1-1-rc1"&gt;http://weblog.rubyonrails.org/2011/9/15/ann-rails-3-1-1-rc1&lt;/a&gt;&lt;br /&gt; The Rails team have released RC1 of version 3.1.1. It&amp;#39;s a bug fix release and it looks like it fixes quite a few bugs.&lt;p /&gt;&lt;a href="http://blog.heroku.com/archives/2011/9/15/facebook/"&gt;http://blog.heroku.com/archives/2011/9/15/facebook/&lt;/a&gt;&lt;br /&gt; Heroku just keeps on getting better and better. It now comes with instant facebook apps. Go to facebook and create a new &amp;quot;cloud&amp;quot; app and it&amp;#39;ll be available for you instantly on heroku, form there you just git clone the repo and code away! Also of note in this upgrade, Heroku now supports PHP and Python! &lt;p /&gt; &lt;a href="http://peepcode.com/products/ryan-singer-ux"&gt;http://peepcode.com/products/ryan-singer-ux&lt;/a&gt;&lt;br /&gt;Peepcode has a new screencast from 37 Signals&amp;#39; Ryan Singer. He&amp;#39;s a UX designer and in this play by play, he shows us how he works.&lt;p /&gt; &lt;a href="http://opensoul.org/blog/archives/2011/09/14/bundle-exec-fatigue"&gt;http://opensoul.org/blog/archives/2011/09/14/bundle-exec-fatigue&lt;/a&gt;&lt;br /&gt;Typing bundle exec all the time is annoying. This little blog post shows you how to get round doing it, ace.
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-19-09-2011"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/ruby-news-roundup-19-09-2011#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/SzFMj05ot8k" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/ruby-news-roundup-19-09-2011</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 15 Sep 2011 10:18:45 -0700</pubDate>
      <title>Rails 3.1 Asset pipeline with Nginx and Passenger</title>
      <link>http://feedproxy.google.com/~r/MrjabasAdventures/~3/bKiYoTU2goE/rails-31-asset-pipeline-with-nginx-and-passen</link>
      <guid isPermaLink="false">http://mrjaba.posterous.com/rails-31-asset-pipeline-with-nginx-and-passen</guid>
      <description>&lt;p&gt;
	TL;DR: Getting the Rails 3.1 Asset Pipline to work with Passenger and Nginx:&lt;p /&gt;- compile your own nginx, pointing it to the right modules, with-http_ssl_module, with-http_gzip_static_module, add-module= &amp;lt;passenger nginx module path&amp;gt;&lt;br /&gt; - Ensure you run rake assets:precompile before deploying, this can be done by including &amp;quot;load deploy/assets&amp;quot; into your cap deploy.rb&lt;br /&gt;- Ensure you also have config.assets.digest = true in your production.rb file.&lt;br /&gt; - Ensure you change the http headers to tell nginx to serve the assets &amp;quot;X-Accel-Redirect&amp;quot; in production.rb&lt;p /&gt;-------&lt;p /&gt;Recently we&amp;#39;ve been working on our latest product, and naturally we want to use the latest and greatest technologies so we&amp;#39;ve been eagerly following the development of Rails 3.1, specifically the asset pipeline as it&amp;#39;s got some really cool features, but I&amp;#39;ll save how we use those for another blog post. &lt;p /&gt; We&amp;#39;re currently working on getting it running in our production environment, a shiny brightbox (&lt;a href="http://brightbox.co.uk"&gt;brightbox.co.uk&lt;/a&gt;) for those that care, and I&amp;#39;ve got to the point of setting up the usual Rails stack, Passenger, Nginx etc. However I ran into a few issues getting it all to play nicely with the asset pipeline. A lot of this was as usual failing to read the docs right!&lt;p /&gt; &lt;b&gt;Issue 1: set Nginx send file header&lt;/b&gt;&lt;p /&gt;In production.rb Nginx requires the &amp;quot;X-Accel-Redirect&amp;quot; header to be present to send files:&lt;br /&gt;&lt;code&gt;
config.action_dispatch.x_sendfile_header = &amp;quot;X-Accel-Redirect&amp;quot;
 &lt;/code&gt;&lt;br /&gt;&lt;b&gt;Issue 2: -  No assets were being sent, all were 404ing&lt;/b&gt;&lt;p /&gt;Make sure you&amp;#39;ve actually pre-compiled the assets, this puts them in public/assets where Nginx will look for them with the nginx.conf below&lt;p /&gt; To make this slightly easier and you less likely to forget, add it into your deploy.rb. Capistrano has taken the legwork out of this, simply add:&lt;br /&gt;&lt;code&gt;
load &amp;#39;deploy/assets&amp;#39; in your deploy.rb
&lt;/code&gt;&lt;br /&gt; &lt;b&gt;Issue 3: Nginx not configured correctly - don&amp;#39;t let passenger do it for you&lt;/b&gt;&lt;p /&gt;Out of the box, or indeed getting passenger to download and compile Nginx for you will not get the best out of it, you&amp;#39;ll likely get a &amp;quot;directive unsupported&amp;quot; or something similar for gzip_static. To fix this you&amp;#39;ll need to compile your own nginx. Follow the guide here:&lt;br /&gt; &lt;a href="http://extralogical.net/articles/howto-compile-nginx-passenger.html"&gt;http://extralogical.net/articles/howto-compile-nginx-passenger.html&lt;/a&gt; to get all the required modules.&lt;p /&gt;&lt;b&gt;Issue 4: No digests being produced by the asset helpers&lt;/b&gt;&lt;p /&gt; So with that all set up, I thought it would be plain sailing from here. Oh no. Looking at the generated templates, the asset helpers javascript_include_tag, and image_tag etc were producing paths that looked correct, ie. &amp;quot;/assets/file.jpg&amp;quot; but oh no, wait, there&amp;#39;s no digest in there that the precompile step added for caching. &lt;p /&gt; Open up your production.rb and add the line&lt;br /&gt;&lt;code&gt;
config.assets.digest = true
&lt;/code&gt;&lt;p /&gt;&lt;b&gt;Issue 5: Nginx Conf file&lt;/b&gt;&lt;p /&gt;To be fair, this is in the Rails Asset Pipeline guide, but repeated here for completeness:&lt;br /&gt; &lt;code&gt;
location ~ ^/(assets)/  {
  root /path/to/public;
  gzip_static on; # to serve pre-gzipped version
  expires max;
  add_header  Cache-Control public;
}
&lt;/code&gt;&lt;p /&gt;&lt;br /&gt;&lt;b&gt;Other things to consider:&lt;/b&gt;&lt;br /&gt; Are you using other places, or manifest files to serve assets? We&amp;#39;re using an admin manifest, and this wasn&amp;#39;t being precompiled, to fix this you&amp;#39;ll need to add it to the precompile list in production.rb:&lt;br /&gt;&lt;code&gt;
 config.assets.precompile += %w( admin/admin.js )
&lt;/code&gt;&lt;p /&gt;&lt;b&gt;Resources&lt;/b&gt;&lt;br /&gt;&lt;a href="http://guides.rubyonrails.org/asset_pipeline.html"&gt;http://guides.rubyonrails.org/asset_pipeline.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://railscasts.com/episodes/279-understanding-the-asset-pipeline"&gt;railscasts.com/episodes/279-understanding-the-asset-pipeline&lt;/a&gt;&lt;p /&gt; &lt;br /&gt;Anyway, hope that helps someone somewhere! Probably me when I come to set up another server!
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mrjaba.posterous.com/rails-31-asset-pipeline-with-nginx-and-passen"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://mrjaba.posterous.com/rails-31-asset-pipeline-with-nginx-and-passen#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MrjabasAdventures/~4/bKiYoTU2goE" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/585246/me-small.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5AvEys5lIJpf</posterous:profileUrl>
        <posterous:firstName>Tom</posterous:firstName>
        <posterous:lastName>Crinson</posterous:lastName>
        <posterous:nickName>MrJaba</posterous:nickName>
        <posterous:displayName>Tom Crinson</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://mrjaba.posterous.com/rails-31-asset-pipeline-with-nginx-and-passen</feedburner:origLink></item>
  </channel>
</rss>

