<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>simplabs</title><generator>Tumblr (3.0; @simplabs)</generator><link>http://log.simplabs.com/</link><item><title>Thanks for the mention Envy Labs!</title><description>&lt;a href="http://ruby5.envylabs.com/episodes/59-episode-57-march-9-2010/stories/472-code-highlighting-with-highlight"&gt;Thanks for the mention Envy Labs!&lt;/a&gt;</description><link>http://log.simplabs.com/post/436849536</link><guid>http://log.simplabs.com/post/436849536</guid><pubDate>Tue, 09 Mar 2010 14:54:42 +0100</pubDate></item><item><title>Nice Tilt-Shift movie of a day in New York City</title><description>&lt;object type="application/x-shockwave-flash" width="400" height="300" data="http://vimeo.com/moogaloop.swf?clip_id=9679622&amp;server=vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF"&gt;&lt;param name="quality" value="best" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="scale" value="showAll" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9679622&amp;server=vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF" /&gt;&lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=9679622&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Nice Tilt-Shift movie of a day in New York City&lt;/p&gt;</description><link>http://log.simplabs.com/post/434654108</link><guid>http://log.simplabs.com/post/434654108</guid><pubDate>Mon, 08 Mar 2010 14:42:00 +0100</pubDate></item><item><title>VERY nice HTML5 video player example</title><description>&lt;a href="http://jilion.com/sublime/video"&gt;VERY nice HTML5 video player example&lt;/a&gt;: &lt;p&gt;Also features full screen display in the latest Webkit nightly builds (Alt-click the fullscreen button)&lt;/p&gt;</description><link>http://log.simplabs.com/post/365482930</link><guid>http://log.simplabs.com/post/365482930</guid><pubDate>Mon, 01 Feb 2010 20:28:00 +0100</pubDate></item><item><title>it’s so stupid it’s actually funny</title><description>&lt;object width="400" height="336"&gt;&lt;param name="movie" value="http://www.youtube.com/v/RAKXTvyYSfc&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/RAKXTvyYSfc&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1" type="application/x-shockwave-flash" width="400" height="336" allowFullScreen="true" wmode="transparent"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;it’s so stupid it’s actually funny&lt;/p&gt;</description><link>http://log.simplabs.com/post/342497864</link><guid>http://log.simplabs.com/post/342497864</guid><pubDate>Tue, 19 Jan 2010 11:46:03 +0100</pubDate></item><item><title>Melbourne 1.0.0</title><description>&lt;p&gt;
I just released version 1.0.0 of the &lt;a href="http://github.com/marcoow/melbourne" title="Melbourne at github"&gt;Melbourne gem&lt;/a&gt;. Melbourne is an extraction of the Melbourne parser from the&lt;a href="http://rubini.us/" title="Rubinius"&gt;Rubinius&lt;/a&gt; project and lets you generate an &lt;a href="http://en.wikipedia.org/wiki/Abstract_syntax_tree" title="More information on ASTs at Wikipedia"&gt;abstract syntax tree&lt;/a&gt; from arbitrary Ruby code.
&lt;/p&gt;
&lt;script src="http://gist.github.com/271979.js?file=gistfile1.rb"&gt;&lt;/script&gt;&lt;p&gt;
See the &lt;a href="http://github.com/marcoow/melbourne" title="Melbourne's README"&gt;README&lt;/a&gt; and the &lt;a href="http://rdoc.info/projects/marcoow/melbourne" title="Melbourne's RDocs"&gt;RDocs&lt;/a&gt; for more information.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Thanks to Evan Phoenix and the Rubinius team for the great work!&lt;/strong&gt;
&lt;/p&gt;</description><link>http://log.simplabs.com/post/323163496</link><guid>http://log.simplabs.com/post/323163496</guid><pubDate>Fri, 08 Jan 2010 11:54:00 +0100</pubDate></item><item><title>Rubinius got a nice new site</title><description>&lt;a href="http://rubini.us/"&gt;Rubinius got a nice new site&lt;/a&gt;</description><link>http://log.simplabs.com/post/322031953</link><guid>http://log.simplabs.com/post/322031953</guid><pubDate>Thu, 07 Jan 2010 21:45:49 +0100</pubDate></item><item><title>I don’t want their drone, I want their office (see at...</title><description>&lt;object width="400" height="336"&gt;&lt;param name="movie" value="http://www.youtube.com/v/V3KrFV0-WFw&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/V3KrFV0-WFw&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1" type="application/x-shockwave-flash" width="400" height="336" allowFullScreen="true" wmode="transparent"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;I don’t want their drone, I want their office (see at around 1:10)!&lt;/p&gt;</description><link>http://log.simplabs.com/post/321338662</link><guid>http://log.simplabs.com/post/321338662</guid><pubDate>Thu, 07 Jan 2010 11:03:00 +0100</pubDate></item><item><title>random Rails tips Vol. 2</title><description>&lt;p&gt;
My series of random Rails tips that &lt;a href="http://log.simplabs.com/post/259542472/random-rails-tips-vol-1" title="random Rails tips Vol. 1"&gt;started a month ago&lt;/a&gt; continues with some tips on how to use &lt;a href="http://github.com/wycats" title="Yehuda Katz on github"&gt;wycats&lt;/a&gt;’ &lt;a href="http://gemcutter.org/gems/bundler" title="the bundler gem on gemcutter"&gt;bundler gem&lt;/a&gt;. What bundler does is basically &lt;strong&gt;maintaining and resolving a project’s gem dependencies (and the dependencies of these gems) and bundling all required gems&lt;/strong&gt; in &lt;code&gt;vendor/gems&lt;/code&gt;. This is what Rails’ &lt;code&gt;gems:x&lt;/code&gt; tasks where intended to do, but never really did sufficiently. Where the rake tasks would frequently fail since the environment that the tasks themselves needed to execute could not be set up because it depended on the gems the tasks where intended to install, bundler is completely independent (only &lt;a href="http://docs.rubygems.org/" title="the Rubygems docs"&gt;rubygems&lt;/a&gt; and the &lt;a href="http://gemcutter.org/gems/bundler" title="the bundler gem on gemcutter"&gt;bundler gem&lt;/a&gt; itself are needed of course).
&lt;/p&gt;
&lt;h5&gt;Setting it up&lt;/h5&gt;
&lt;p&gt;
To set up bundler for your project, you first need to create a &lt;strong&gt;&lt;code&gt;Gemfile&lt;/code&gt; in that you specify all dependencies your application has&lt;/strong&gt;. You can specify versions, the libs to include (if they could not be resolved from the gem name) and also require certain gems only in certain environments. A sample gem file for a &lt;a href="http://rubyonrails.org" title="Ruby on Rails"&gt;Rails&lt;/a&gt; app using &lt;a href="http://datamapper.org" title="DataMapper ORM"&gt;DataMapper&lt;/a&gt; (expect more on using DataMapper with Rails in a future post of my random Rails tips series) might look like this:
&lt;/p&gt;
&lt;script src="http://gist.github.com/260100.js?file=gistfile1.rb"&gt;&lt;/script&gt;&lt;p&gt;
In the first line, the path is specified where bundler holds the &lt;code&gt;*.gem&lt;/code&gt; files, the extracted gem sources etc. The second line &lt;strong&gt;disables the system’s gems so that any gems that might be installed on your machine but are not bundled with the application will not be loaded&lt;/strong&gt;. This is pretty important to be sure that the application is actually self contained and you didn’t forget to specify a dependency which didn’t lead to errors because the missing gem was installed on your machine.
&lt;/p&gt;
&lt;p&gt;
The last block in the gem file specifies gems that are needed everywhere except for the production environment. While you need gems like &lt;a href="http://gemcutter.org/gems/rspec" title="RSpec on gemcutter"&gt;rspec&lt;/a&gt;, &lt;a href="http://gemcutter.org/gems/rspec-rails" title="RSpec/Rails on gemcutter"&gt;rspec-rails&lt;/a&gt; or &lt;a href="http://gemcutter.org/gems/excellent" title="Excellent on gemcutter"&gt;excellent&lt;/a&gt; in the &lt;code&gt;test&lt;/code&gt; and possibly also in the &lt;code&gt;development&lt;/code&gt; environment, you certainly don’t need these gems to be installed on your production machine(s).
&lt;/p&gt;
&lt;h5&gt;Using bundler&lt;h5&gt;
&lt;/h5&gt;
&lt;/h5&gt;
&lt;p&gt;
&lt;strong&gt;Of course you need to make sure that the bundled gems will actually be used&lt;/strong&gt; (Rails 3 will support bundler out of the box, however Rails 2.3 doesn’t; see &lt;a href="http://github.com/qrush" title="qrush on github"&gt;qrush&lt;/a&gt;’s &lt;a href="http://github.com/qrush/gemcutter/commit/1708305422738a074ec6c57f21ffb713496cd46b" title="fix to make the bundler gem work with Passenger"&gt;commit to the gemcutter.org source&lt;/a&gt;). Therefore &lt;strong&gt;you have to add a &lt;code&gt;preinitializer.rb&lt;/code&gt;&lt;/strong&gt; in your app’s &lt;code&gt;config&lt;/code&gt; directory:
&lt;/p&gt;
&lt;script src="http://gist.github.com/260107.js?file=preinitializer.rb"&gt;&lt;/script&gt;&lt;p&gt;
Yehuda describes a different solution in his &lt;a href="http://yehudakatz.com/2009/11/03/using-the-new-gem-bundler-today/" title="Yehuda Katz on using bundler today"&gt;blog post&lt;/a&gt; but that doesn’t work with &lt;a href="http://www.modrails.com/" title="Phusion Passenger/ mod_rails"&gt;Passenger&lt;/a&gt; under certain conditions. &lt;strong&gt;You also have to edit your boot.rb&lt;/strong&gt; to include the following block right at the end:
&lt;/p&gt;
&lt;script src="http://gist.github.com/260109.js?file=boot.rb"&gt;&lt;/script&gt;&lt;p&gt;
When everything is set up, you can &lt;strong&gt;run &lt;code&gt;gem bundle&lt;/code&gt;&lt;/strong&gt; from your app’s root and bundler will install all the required gems:
&lt;/p&gt;
&lt;script src="http://gist.github.com/260111.js?file=gistfile1.sh"&gt;&lt;/script&gt;&lt;p&gt;
You now have all gems your app requires bundled in &lt;code&gt;vendor/gems&lt;/code&gt; and are ready to run &lt;code&gt;./script/server/&lt;/code&gt;.
&lt;/p&gt;
&lt;h5&gt;Deployment with the bundler gem&lt;/h5&gt;
&lt;p&gt;
&lt;strong&gt;Deploying you app with the help of bundler is a breeze&lt;/strong&gt;. It’s as easy as adding two tasks to your &lt;code&gt;deploy.rb&lt;/code&gt; (assuming you’re using Capistrano; thanks &lt;a href="http://github.com/jerryvos" title="jerryvos on github"&gt; jerryvos&lt;/a&gt; for &lt;a href="http://gist.github.com/244420" title="Capistrano tasks for the bundler gems"&gt;pointing that out&lt;/a&gt;):
&lt;/p&gt;
&lt;script src="http://gist.github.com/260113.js?file=deploy.rb"&gt;&lt;/script&gt;&lt;p&gt;
This will keep all your app’s gems in &lt;code&gt;shared/vendor/gems&lt;/code&gt; and make sure that whenever a new gem is required and not bundled on the server (or a new version is available and you’re not requiring exact versions), it is installed.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Using the bundler gem makes your life a lot easier&lt;/strong&gt;, works pretty good already and there really is no reason to wait for Rails 3 to use it. So everybody go ahead: &lt;code&gt;gem install bundler&lt;/code&gt;!
&lt;/p&gt;</description><link>http://log.simplabs.com/post/290355276</link><guid>http://log.simplabs.com/post/290355276</guid><pubDate>Sat, 19 Dec 2009 16:26:06 +0100</pubDate></item><item><title>My Code to Test ratio won't stop increasing...</title><description>&lt;script src="http://gist.github.com/260056.js?file=gistfile1.sh"&gt;&lt;/script&gt;&lt;p&gt;
  1:2.8!
&lt;/p&gt;</description><link>http://log.simplabs.com/post/290201194</link><guid>http://log.simplabs.com/post/290201194</guid><pubDate>Sat, 19 Dec 2009 12:55:44 +0100</pubDate></item><item><title>http://www.gapminder.org/</title><description>&lt;object width="400" height="336"&gt;&lt;param name="movie" value="http://www.youtube.com/v/RUwS1uAdUcI&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/RUwS1uAdUcI&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1" type="application/x-shockwave-flash" width="400" height="336" allowFullScreen="true" wmode="transparent"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://www.gapminder.org/"&gt;&lt;a href="http://www.gapminder.org/"&gt;http://www.gapminder.org/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://log.simplabs.com/post/282979587</link><guid>http://log.simplabs.com/post/282979587</guid><pubDate>Mon, 14 Dec 2009 09:55:08 +0100</pubDate></item><item><title>Video</title><description>&lt;object width="400" height="336"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5ZWC0kk77GI&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/5ZWC0kk77GI&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1" type="application/x-shockwave-flash" width="400" height="336" allowFullScreen="true" wmode="transparent"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://log.simplabs.com/post/277757602</link><guid>http://log.simplabs.com/post/277757602</guid><pubDate>Thu, 10 Dec 2009 19:00:07 +0100</pubDate></item><item><title>random Rails tips Vol. 1</title><description>&lt;p&gt;Some random tips for your next &lt;a href="http://rubyonrails.org" title="Ruby on Rails"&gt;Ruby on Rails&lt;/a&gt; project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If you &lt;strong&gt;have to&lt;/strong&gt; monkey patch gems or plugins (&lt;strong&gt;only monkey patch anything if you really have to&lt;/strong&gt;, it can make finding errors a giant pain), make a &lt;code&gt;Rails.root/lib/patches&lt;/code&gt; directory in which you keep all the (monkey) patches you need and include them in your &lt;code&gt;environment.rb&lt;/code&gt;:&lt;/p&gt;
&lt;script src="http://gist.github.com/244048.js?file=environment.rb"&gt;&lt;/script&gt;&lt;p&gt;This way you at least structure your monkey patching stuff better and know of the one place where strange behavior might originate.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Also if you monkey patch, &lt;strong&gt;don’t do any fancy (and often unneccessary) &lt;code&gt;class_eval&lt;/code&gt;&lt;/strong&gt; as long as it’s not possible to get the same result by simply reopening the class (or module) body. It’s by far more readable! Also see &lt;a href="http://yehudakatz.com/2009/11/15/metaprogramming-in-ruby-its-all-about-the-self/" title="Yehuda Katz: Metaprogramming in Ruby; it's all about the self"&gt;Yehuda Katz’s great blog post about this topic&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you have to specify class names on associations that could not be automagically inferred from the associations’s name, &lt;strong&gt;always use the actual class and convert it to String instead of specifying a String directly&lt;/strong&gt;.&lt;/p&gt;
&lt;script src="http://gist.github.com/244060.js?file=gistfile1.rb"&gt;&lt;/script&gt;&lt;p&gt;When you specify the class name as a String directly and change the class’s name, it will fail late, as opposed to when you convert the actual class to String will fail early (namely on startup) since you’ll be referencing a class that does not exist.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are probably more random tips to come in the future so stay tuned.&lt;/p&gt;</description><link>http://log.simplabs.com/post/259542472</link><guid>http://log.simplabs.com/post/259542472</guid><pubDate>Fri, 27 Nov 2009 16:14:00 +0100</pubDate></item><item><title>Rubinius 1.0.0 RC1</title><description>&lt;a href="http://github.com/evanphx/rubinius/tree/release-1.0.0-rc1"&gt;Rubinius 1.0.0 RC1&lt;/a&gt;: &lt;p&gt;will 1.0 finally be available soon?&lt;/p&gt;</description><link>http://log.simplabs.com/post/258077476</link><guid>http://log.simplabs.com/post/258077476</guid><pubDate>Thu, 26 Nov 2009 10:15:00 +0100</pubDate></item><item><title>…</title><description>&lt;img src="http://28.media.tumblr.com/tumblr_ktkfww7xUC1qzr32ho1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;…&lt;/p&gt;</description><link>http://log.simplabs.com/post/254364381</link><guid>http://log.simplabs.com/post/254364381</guid><pubDate>Mon, 23 Nov 2009 15:22:00 +0100</pubDate></item><item><title>Thanks for telling me Excellent!
</title><description>&lt;p&gt;Thanks for telling me &lt;a href="http://simplabs.github.com/excellent/" title="Excellent - static analysis for Ruby and Rails"&gt;Excellent!&lt;/a&gt;&lt;/p&gt;
&lt;script src="http://gist.github.com/239527.js?file=gistfile1.sh"&gt;&lt;/script&gt;</description><link>http://log.simplabs.com/post/250822119</link><guid>http://log.simplabs.com/post/250822119</guid><pubDate>Fri, 20 Nov 2009 15:20:47 +0100</pubDate></item><item><title>BDD worshipping continued...</title><description>&lt;p&gt;And yet another post in my &lt;a href="http://log.simplabs.com/post/213595611/new-project-is-going-good" title="New project is going good"&gt;series&lt;/a&gt; on &lt;a href="http://log.simplabs.com/post/223978924/1-1-8-already" title="1:1.8 already"&gt;BDD&lt;/a&gt; &lt;a href="http://log.simplabs.com/post/225939290/2-days-later-im-at-1-1-9" title="2 days later I'm at 1:1.9"&gt;worshipping&lt;/a&gt;. My current stats are:&lt;/p&gt;

&lt;script src="http://gist.github.com/227868.js"&gt;&lt;/script&gt;&lt;p&gt;This might look ridiculous to some. However, I think I have &lt;strong&gt;never been more productive implementing new features or refactoring code&lt;/strong&gt; than with this setup. And it completely liberates one of the fear to break something and forces one to think about what one’s implementing in advance since everything &lt;strong&gt;has to be spec’d first&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Also, a good spork/autospec setup with fast running specs (I currently &lt;strong&gt;only have about 10-20 examples that actually hit the DB&lt;/strong&gt;) makes continuously running specs pure joy since you get feedback on any changes you make instantly.&lt;/p&gt;
&lt;script src="http://gist.github.com/227876.js"&gt;&lt;/script&gt;&lt;p&gt;To further improve quality, it makes sense to run Excellent or reek from time time to find erroneous patterns in the codebase. I use a simple rake task for Excellent:&lt;/p&gt;
&lt;script src="http://gist.github.com/227875.js"&gt;&lt;/script&gt;</description><link>http://log.simplabs.com/post/234825300</link><guid>http://log.simplabs.com/post/234825300</guid><pubDate>Fri, 06 Nov 2009 10:56:00 +0100</pubDate></item><item><title>2 days later I'm at 1:1.9</title><description>&lt;p&gt;&lt;script src="http://gist.github.com/220513.js"&gt;&lt;/script&gt;&lt;/p&gt;</description><link>http://log.simplabs.com/post/225939290</link><guid>http://log.simplabs.com/post/225939290</guid><pubDate>Wed, 28 Oct 2009 15:33:23 +0100</pubDate></item><item><title>1:1.8 already...</title><description>&lt;p&gt;&lt;script src="http://gist.github.com/218834.js"&gt;&lt;/script&gt;&lt;/p&gt;</description><link>http://log.simplabs.com/post/223978924</link><guid>http://log.simplabs.com/post/223978924</guid><pubDate>Mon, 26 Oct 2009 18:27:05 +0100</pubDate></item><item><title>Faking polymorphic belongs_to in DataMapper</title><description>&lt;p&gt;
I just implemented a custom data type to fake polymorphic &lt;code&gt;belongs_to&lt;/code&gt; associations in &lt;a href="http://datamapper.org" title="DataMapper website"&gt;DataMapper&lt;/a&gt;. It’s actually kind of a hack and has some drawbacks but might work in some situations.
&lt;/p&gt;
&lt;script src="http://gist.github.com/211804.js"&gt;&lt;/script&gt;&lt;script src="http://gist.github.com/211805.js"&gt;&lt;/script&gt;&lt;p&gt;
What the data type does is it actually save the reference to the associated model in a text field in the form &lt;code&gt;[class]/[id]&lt;/code&gt;. To load it, it simply &lt;code&gt;constantize&lt;/code&gt;s the class name and gets the instance by the saved id.
&lt;/p&gt;
&lt;h5&gt;Drawbacks&lt;/h5&gt;
&lt;p&gt;Of course there are some drawbacks to this solution:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;this in only &lt;strong&gt;unidirectional&lt;/strong&gt;, there is no &lt;code&gt;has n, :polymorphic&lt;/code&gt; or anything like that&lt;/li&gt;
&lt;li&gt;It does not really look good in the database&lt;/li&gt;
&lt;li&gt;this is &lt;strong&gt;no real association&lt;/strong&gt;, for example it’s &lt;strong&gt;not possible to add foreign key constraints&lt;/strong&gt; or the like&lt;/li&gt;
&lt;li&gt;probably doesn’t work with composite keys on the associated model&lt;/li&gt;
&lt;li&gt;and probably lots more…&lt;/li&gt;
&lt;/ul&gt;</description><link>http://log.simplabs.com/post/214673376</link><guid>http://log.simplabs.com/post/214673376</guid><pubDate>Fri, 16 Oct 2009 15:30:00 +0200</pubDate></item><item><title>New project is going good...</title><description>&lt;p&gt;&lt;script src="http://gist.github.com/210760.js"&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;1:1.6 ;)&lt;/p&gt;</description><link>http://log.simplabs.com/post/213595611</link><guid>http://log.simplabs.com/post/213595611</guid><pubDate>Thu, 15 Oct 2009 09:37:19 +0200</pubDate></item></channel></rss>
