Looking for ruby Keywords? Try Ask4Keywords

Ruby LanguageAffe Patching in Rubin


Bemerkungen

Das Affen-Patchen hat zwar praktische Auswirkungen, weist jedoch einige nicht sofort erkennbare Fallstricke auf. Ein Patch wie dieser im Beispiel verschmutzt den globalen Geltungsbereich. Wenn zwei Module Hash#symbolize , wird nur das letzte erforderliche Modul angewendet. Der Rest wird gelöscht.

Wenn bei einer gepatchten Methode ein Fehler auftritt, zeigt der Stacktrace einfach auf die gepatchte Klasse. Dies impliziert, dass es einen Fehler in der Hash Klasse selbst gibt (die es jetzt gibt).

Schließlich, da Ruby sehr flexibel ist, welche Container zu halten sind, eine Methode, die beim Schreiben sehr unkompliziert erscheint, verfügt über viele undefinierte Funktionen. Das Erstellen von Array#sum ist beispielsweise für ein Array von Zahlen geeignet, unterbricht jedoch ein Array einer benutzerdefinierten Klasse.

Eine sicherere Alternative sind Verfeinerungen, verfügbar in Ruby> = 2.0.

Affe Patching in Rubin Verwandte Beispiele