2010-08-06 9 views
40

Jaki jest preferowany sposób na Monkey Patch w Rails 3?Monkey Patching in Rails 3

Po prostu chcę dodać metodę do klasy String. Bardziej przyglądam się, gdzie umieścić plik.

Odpowiedz

72

Katalog inicjalizacyjny jest dobrym miejscem do zbierania wszystkich tych małych odpadków. Ponieważ mam tendencję do bycia nieco za burtą z rozszerzeniami rdzeniowymi, lubię tworzyć folder o nazwie "rozszerzenia" i wrzucać tam wszystkie.

Wypróbuj więc /config/initializers/string_extension.rb lub /config/initializers/extensions/string.rb lub coś podobnego. Tak czy inaczej, możesz po prostu zapomnieć o nich później - Railsy będą ich wymagać, więc nie musisz tego robić sam.

+0

Możesz także uporządkować je po tym blogu, ułatwiając debugowanie i konserwację poprawek małp: http://www.justinweiss.com/blog/2015/01/20/3-ways-to-monkey-patch-without- robiąc bałagan/ –

0

Jeśli jest to klasa specyficzna, można po prostu ponownie zdefiniować metodę w klasie, do której jest ona potrzebna. W przeciwnym razie zależy to całkowicie od tego, która część aplikacji ma być używana. Jako przykład otwarcia klasy, aby ponownie zdefiniować metodę: http://codepad.org/Cj1LHmQj , ale prawdopodobnie już wiesz, że możesz to zrobić.

+0

Jeśli chcesz, aby twoja metoda ciągów była dostępna w wielu miejscach, rozważ moduł i umieść go w katalogu lib, w tym w razie potrzeby. –