MonkeyPatching in Ruby - simple example

Category: Ruby :: Published at: 25.05.2023

MonkeyPatching in Ruby is actually extremely easy to understand and use.

We can monkey patch any ruby class, and this is how to do it.

 

WHEN WE SHOULD MONKEYPATCH?

  • if we want to fix the broken code inside some library
  • when we want to check something fast

 

HOW IT WORKS

For sure we all now reverse method belonging to the Array class.

["a", "b", "c"].reverse
=> ["c", "b", "a"]

It's quite common, and we use it on daily basis.

If we want to change the use of this method, we can just write in a new file:

# frozen_string_literal: true

class Array
  def reverse
    raise "Error Blocked"
  end
end

["a", "b", "c"].reverse

It will return an error instead of reversing the array.

 

BEST WAY TO DO IT

In modern programming people believe that just overriting a class is not a good idea. It can give us a lot of problems. 

For example we can monkey patch some method twice - it will be overrited, and we won't know what is happening.

It is good to monkey patch classes inside modules and then include them when we need it.

Check this out:

 


- Click if you liked this article

Views: 960