Looking for ruby Keywords? Try Ask4Keywords

Ruby Language Parches Safe Monkey con Refinamientos


Ejemplo

Desde Ruby 2.0, Ruby permite tener revisiones de mono más seguras con mejoras. Básicamente, permite limitar el código de Monkey Patched para que solo se aplique cuando se solicita.

Primero creamos un refinamiento en un módulo:

module RefiningString
  refine String do
    def reverse
      "Hell riders"
    end
  end
end

Entonces podemos decidir dónde usarlo:

class AClassWithoutMP   
  def initialize(str)
    @str = str
  end
   
  def reverse
    @str.reverse
  end
end

class AClassWithMP
  using RefiningString

  def initialize(str)
    @str = str
  end
   
  def reverse
    str.reverse
  end
end

AClassWithoutMP.new("hello".reverse # => "olle"
AClassWithMP.new("hello").reverse # "Hell riders"