كيف يمكنك أن تفعل آمنة، إلى الوراء متوافقة مع "monkeypatch عكس" في روبي؟

StackOverflow https://stackoverflow.com/questions/871548

  •  22-08-2019
  •  | 
  •  

سؤال

إذا زميل بك "يفتح" ( "monkeypatches") فئة في روبي ويعيد بعض الوظائف الهامة التي تحتاج إلى استخدام، كيف الوصول إلى ذلك الأصلية وظائف قبل monkeypatched دون كسر النظام الذي يعتمد بالفعل / لديها تبعيات على له monkeypatched التعاريف؟

هل كانت مفيدة؟

المحلول

ونظرا لمثال على الغلابة الطريقة، إذا كان يمكنك الحصول على بعض التعليمات البرمجية تحميل قبل تحميل له التصحيح قرد ثم يمكنك الاسم المستعار الطريقة.

class Fixnum
  alias_method :original_plus, :+
end

class Fixnum
  def +(x)
    self - x
  end
end

>> 5 + 3
=> 2
>> 5.original_plus(3)
=> 8

نصائح أخرى

وأنا مؤخرا رأيت هذا في تغذية rubyflow - مكتبة بسيطة لأنه يتيح لك مساحة الثوابت مستوى أعلى يسمى <لأ href = "http://www.flyingmachinestudios.com/2009/05/10/aikidoka-prevents-ruby -namespace-الاصطدامات / "يختلط =" نوفولو noreferrer "> aikidoka . دون أي تفاصيل عن كيفية / ما يجري قرد يرقع أنها قليلا صعبة للمساعدة. من الناحية النظرية على الرغم من أنك يمكن استخدام نهج مثل هذا لمساحة إصدار مصححة قرد من الفئة بحيث يمكنك الوصول إلى كل ذلك والأصلي بشكل مستقل.

ويعتمد بالضبط ما تم تغيير وظائف وبأي طريقة، ولكن شيئا تنفيذ مثل جيم Wienrich في <لأ href = "http://onestepback.org/index.cgi/Tech/Ruby/BlankSlate.rdoc" يختلط = "نوفولو noreferrer "الطبقة> BlankSlate قد تساعد:

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top