Hi all,<br style="font-size: 13.0222px;"><br style="font-size: 13.0222px;">I was talking with Nick Ludlam last night about his own pet project and the topic of gems came up.  The gist of our chat was that although there are loads of tools out there to help you publish your gem (Hoe: <a href="http://seattlerb.rubyforge.org/hoe/">http://seattlerb.rubyforge.org/hoe/</a>, Echoe:
<a href="http://blog.evanweaver.com/files/doc/fauna/echoe/">http://blog.evanweaver.com/files/doc/fauna/echoe/</a>, Newgem:
<a href="http://newgem.rubyforge.org/">http://newgem.rubyforge.org/</a> to name a few obvious candidates) there seemed to be a lack of any kind of best practice documentation out there for what you should do <i style="font-size: 13.0222px;">before</i> you are ready to actually gem it up.  For example, how best to layout the code?, should you namespace your code?, use modules or classes? etc... (I'm sure there were other things that we mentioned, but I can't remember them, Nick do you want to chip in?)  Nick also said that in trying to build his own gems he looked at a bunch of other gems for inspiration and pretty much every other gem did things differently and no obvious best practice similarities jumped out at him.<br>
<br>Ok, that's one guy's story via a conversation in a pub, however there are two things happening in the ruby/rails world that mean best practice gem development is something we should all care about:<br><br>1. Rails is finally moving towards a gems as plugins model, so we'll probably all want to have our rails plugins be made available as gems as well as just providing access to our code repositories for script/plugin install.  See <a href="http://ryandaigle.com/articles/2008/4/1/what-s-new-in-edge-rails-gem-dependencies">http://ryandaigle.com/articles/2008/4/1/what-s-new-in-edge-rails-gem-dependencies</a> for more info.<br>
<br>2. Github, where all the cool kids are hanging out, makes it super easy to produce a gem; just drop a .gemspec in your repository and boom! there's a gem hosted for you.  See <a href="http://gems.github.com/">http://gems.github.com/</a> for more info.<br>
<br>It's obvious therefore that we're all going to be writing gems whether we want to or not.  Also Tom's talk last night will have inspired everyone to actually finish
off their own pet projects and unleash a torrent of gems on the world.<br>
<br>My somewhat meandering point is this: would someone like to go lock themselves up in a shack in the woods for a month or so to research all this gem best practice stuff and then present their findings back to the group?  Possibly for the June meeting, but most likely for the July meeting.<br>
<br>Cheers,<br><br>Muz<br><br><br>