Looking for ruby Keywords? Try Ask4Keywords

Ruby Language 세분화 된 안전한 원숭이 패치


Ruby 2.0부터 Ruby는 세련된 Monkey Patching을 사용할 수 있습니다. 기본적으로 Monkey Patched 코드가 요청 될 때만 적용되도록 제한합니다.

먼저 모듈에서 상세 검색을 만듭니다.

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

그런 다음 사용할 위치를 결정할 수 있습니다.

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"