Ruby has a very beautiful syntax and so it can be tempting to monkey patch a class to turn some ugly method call into something that is more readable.
Ruby monkey patch class method.
All users of the monkey patched class see the same changes.
So the behavior of the class monkey is changed dynamically.
Unfortunately the scope of such changes is global.
Pass dummy class x foo foo bar lambda self.
The linking of a new method to the existing class method name happens at runtime.
42 print x bar but you can t do this for certain built in classes like int or float.
3 aspects of this code are likely to change in the next release.
There s no good reason to do this sort of patching because jruby marshals strings between java and ruby.
Due to ruby s open classes you can redefine or add functionality to existing classes.
These classes methods are implemented in c and there are certain abstractions sacrificed in order to make the implementation easier and more efficient.
You have to know where your monkey patches live.
In the above class you are changing the behavior of the class method defined in the same program file.
2 monkey patched java methods are only available in ruby code.
Patches go into lib core.
This can cause unintended side effects or breakage of programs.
Every app with core patches feels a little bit different.
Motivated by the intent to patch existing third party code as a workaround to a bug or feature.
The above statement asserts that the ruby usage is incorrect but terms evolve and that s not always a bad thing.
When you monkey patch core classes you add to the core ruby apis.
This is called a monkey patch.
So you have to have a way to quickly learn those changes when you jump into a new codebase.
I mostly follow rails monkey patching convention.
We are assigning a new method name patchfunc to the existing class method name monkeyfunc.
Intro to monkey patching in ruby.
With that in mind let s look at a completely contrived example.
In ruby a monkey patch mp is any dynamic modification to a class and is often used as a synonym for dynamically modifying any class add new or overwrite existing methods at runtime.
Monkey patching changes the behavior of class methods.