-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On May 16, 2008, at 9:31 PM, Robert D. wrote:
I would it call dangerous in libraries not applications and still
anyway ;), no worries your question is a sensitive one!
Probably ‘dynamic’.
Absolutely agree here
Robert
Actually, I disagree with both definitions. I don’t consider opening
and extending
Classes (be they core or not) monkey-patching.
I define monkey-patching as “opening and changing behaviour of a
method/class
in the knowledge that other classes/libraries depend on it”.
So
class Array
def my_funky_function
“this array is of the hook”
end
end
has nothing to do with monkey-patching - chances are high that there
are no conflicts.
class Array
def []=(elem)
#whoops, i dropped the element
end
end
is a total different case. I postulate that most Programs written in
Ruby depend on the behaviour
of Array#[]=. So this is monkey-patching at its worst. (you patch a
certain functionality because
you think that it should behave differently. In this case, it is
pretty obvious, that this try was a failure.
The wikipedia has a nice explanation:
"In Python, the term monkey patch only refers to dynamic modifications
of a class at runtime based on the intent to patch existing methods in
an external class as a workaround to a bug or feature which does not
act as you desire. Other forms of modifying a class at runtime have
different names, based on their different intents. For example, in
Zope and Plone, security patches are often delivered using dynamic
class modification, but they are called hot fixes.
In Ruby, the term monkey patch was misunderstood to mean any dynamic
modification to a class and is often used as a synonym for dynamically
modifying any class at runtime."
Regards
Florian G.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)
iEYEARECAAYFAkgt5QoACgkQJA/zY0IIRZbRWQCdG0vRaJ4pNCCVTQsa2lgKbs0B
cy0AnjlxblREs1mQhmqn6WEkPP/HjEqr
=fQOe
-----END PGP SIGNATURE-----