Looking for ruby Keywords? Try Ask4Keywords

Ruby Language Sicheres Affen-Patchen mit Verfeinerungen


Beispiel

Seit Ruby 2.0 erlaubt Ruby sichereres Monkey Patching mit Verfeinerungen. Grundsätzlich ist es möglich, den Code für den Affen-Patch so einzuschränken, dass er nur auf Anforderung angewendet wird.

Zuerst erstellen wir eine Verfeinerung in einem Modul:

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

Dann können wir entscheiden, wo wir es verwenden sollen:

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"