Keeping up with Merb
Thursday, 09 October 2008It used to be that every time you blinked, there was a new Ruby framework being released: first Camping, then Merb, then Sinatra. The equivalent this season is point releases of Merb. Working its way to a 1.0 release in the middle of October, Merb is on a biweekly schedule, steadily working its way up from 0.9.3 to 1.0 over the past two months.
Each release has brought a host of new toys and welcome refinements to the framework, which make new projects a joy to start. The tradeoff is the nightmare created for supporting “legacy” Merb apps, where “legacy” with respect to the current release schedule means “more than two weeks old.”
Anyone who has tried to upgrade a Merb installation recently has quickly run into this nightmare: a seemingly endless chain of difficult-to-trace RubyGem dependency errors, broken framework freezing solutions, and the inability to run two apps on two different versions of Merb off the same Gems repository side-by-side.
What follows over the next few blog posts is less a solution and more a band-aid to the problem. It should be good enough to help troubleshoot upgrade issues, provide a footing for getting a old Merb app (0.9.2 – 0.9.3) upgraded to edge (0,9,8 currently), and help you hold your breath until 1.0 is releases and these legacy issues fade away.
With me being a band-aid salesman and not a real doctor, I’ll provide plenty of complaints, some suggestions, and more than likely very little in the way of actual solutions (patches, bug reports, etc.) Hopefully someone more clever than I will be able to see through our mysery to a proper, long term solution.
Here’s what is going to be discussed:
- The nature of the problem: RubyGems, their dependencies, and the conflicts that arrise
- Merb’s approach to solving the problem: freezing gems
- Protecting your currently functioning Merb apps: how to make sure that upgrading one app doesn’t foobar your others.
- Upgrading a Merb app: freezing Merb and upgrading a Merb app.
Comments