

Kicking the Tires on Ruby 2.1 Preview - micahalles
http://spin.atomicobject.com/2013/09/26/ruby-2-1-preview/

======
jrochkind1
Refinements, why, matz, why?

In a large complex program with many dependencies, they are going to make
debugging an nightmare, figuring out where the method you were calling is
actually defined. And lead to weird hard to diagnose bugs where you call a
method with a differnet definition than you expected.

And the use cases that justify refinements is entirely large complex programs
with many dependencies, right? They're supposed to actually _reduce_ bugs and
debugging challenges from monkeypatching... but nobody seems to actually think
they do except matz.

Is _anyone_ who works on well-known large complex programs with many
dependencies -- actually on record as supporting refinements, subsequent to
the analyses that showed what a mess they'd become?

Why, matz, why?

~~~
ufmace
My understanding is that refinements are more of a limitation of existing
monkeypatching functionality though. Like before, if you needed to monkeypatch
something, you had to re-define the method system-wide. This seems like it
allows you to have the monkeypatch only apply in the modules that you need it
to, and to define it with a special refine keyword that's easy to search for.

Then again, many of the major gems that I've worked with so far define methods
in various dynamic ways, making it challenging to figure out what code it's
actually running. Hello ActiveRecord?

~~~
dewind
I'll refer to Nutter on this one. Refinements appear to be a method caching
nightmare.

[http://blog.headius.com/2012/11/refining-
ruby.html](http://blog.headius.com/2012/11/refining-ruby.html)

~~~
dragonwriter
Those concerns voiced with 2.0's refinements before release were why they were
marked as experimental, and were the driving force behind the changes made to
refinements between 2.0 and 2.1.

On the 2.1, non-experimental version, he has said: "What we’re going to have
as refinements in 2.1 is a paired down version that I think still provides the
bulk of the functionality people wanted out of the feature without most of the
pain that I was concerned about originally."

[http://rubyrogues.com/124-rr-jruby-with-charlie-
nutter/](http://rubyrogues.com/124-rr-jruby-with-charlie-nutter/)

------
dopamean
I'm interested in seeing how refinements actually affect things. Matz is so
set on it but so many smarter people than me think it's a mistake.

~~~
shawn42
+1 I wonder if anyone has a branch of what the "refined" activesupport would
look like.

~~~
rurounijones
I still wonder why a lot of activesupport's monkey patches are not merged into
ruby's stdlib proper. Sure some of it is quite rails specific but things like
String#constantize is just so damn handy it should be in ruby stdlib.

