safe_monkey_patching
Przykład
module ActiveJob
class Base
class << self
monkey_patch :deserialize
def deserialize(job_data)
...
end
end
end
end
metoda #monkey_patch generuje hash kodu źródłowego #deserialize (tej oryginalnej) i zapisze go do pliku
---
ActiveJob::Core::ClassMethods:
deserialize:
sha1: c29634da4f1731775868a6eba5efc837dd711a54
a więc, gdy podbijemy railsy i zmieni się kod źródłowy, to gif diff nam o tym powie 🤩
diff --git a/monkey_patches-old.yml b/monkey_patches-old.yml
ActiveJob::Core::ClassMethods:
deserialize:
- sha1: c29634da4f1731775868a6eba5efc837dd711a54
+ sha1: 131d3acf24768b30a3ccb1052591b1cdb603f0cd
Również pojawi się plik WRONG_MONKEY_PATCHES.txt, który pokazuje niekompatybilności z gemów.
Dzięki temu będziemy wiedzieli do jakich metod trzeba będzie zajrzeć 🥳
Aby zaktualizować monkey_patche, to trzeba po prostu zcomitować ten plik monkey_patches-old.yml i będzie git.