Ruby 1.9.2 Encodings
An awesome series by James Gray.
Refinements in Ruby are going to be a BFD, but may drag 1.9 adoption out even longer
Magnus Holm has a SWEET rundown of refinements over at his blog. The original patch and commentary can be seen here.
Something about this smells like a pretty big fucking deal. This is going to drive a lot of innovation; people are going to be able to do a lot of really sweet things w/ refinements. No longer will horrible monkey patches be banished to the bowels of our applications. No longer will stack traces blame ThinkingSphinx when you incorrectly use a formtastic form helper. Monkey patches will soon be come easily testable first class citizens, and their undesired side effects will be greatly diminished.
As with any new functionality, it will create a portability issue. Once this drops into 1.9.3, anything using it won’t be backward compatible, and the incompatibility won’t be the kind of thing that will be fixable w/ a gem. But this isn’t that big of a deal; every new release of Ruby has things like this.
A bigger problem that refinements will introduce into Ruby is the further slowdown of Ruby 1.9 adoption. Ruby 1.9 adoption has not come on as fast as some would like, and I see refinements dragging that on even further. If you’re in a resource constrained environment, you may only get to change your Ruby version once or twice a year. Why would you upgrade from 1.8.6 to 1.9.2 when refinements are going to drastically change the Ruby landscape in 1.9.3?
I’m pretty excited for refinements, but I’m torn on when to pull the trigger on upgrading production apps away from from 1.8.x, and refinements just made that decision even more difficult.
Thoughts?
