The reason your original approach doesn t work is that instead of monkey patching array class you implemented a new stylable array class note the namespace.
Ruby monkey patch private method.
When you monkey patch core classes you add to the core ruby apis.
Range and quartiles and spread e g variance and standard deviation.
But just like monkey patching alias method chain got overused and its problems started to become obvious.
This gem calculates descriptive statistics including measures of central tendency e g.
Ruby does supply the private class method.
Mean median mode dispersion e g.
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.
The difference between this library and others is that all monkey patching is performed in an opt in way because you shouldnt be using methods you dont know about anyways.
Alias method chain led to my first patches to gems which led to my first pull requests which led to my first open source contributions.
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.
I mostly follow rails monkey patching convention.
For example you often see monkey patches that simply add a convenience method that has no side effect.
The method names it generates are confusing which makes errors hard to find and debug.
Patches go into lib core.
If you re running ruby 2 0 and you don t want to monkey patch array globally you could create custom class that inherits from array.
A collection of helpful methods and monkey patches for arrays hash enumerables strings objects dates in ruby.
Another reason to question the def self method notation is the ability to define private and protected methods.
Rearmed is a collection of plugins which are driven by making life easier coding more natural.
Therefore a monkey patch might break code which doesn t expect the extended behavior and multiple monkey patches for the same class might cause conflicts to solve these problems refinements provide a way to extend classes locally.
Or perhaps you need to monkey patch a class you own.
So you have to have a way to quickly learn those changes when you jump into a new codebase.
Monkey patching is a powerful feature of ruby however it affects globally in a program.