Próbuję użyć zawężania ruby do zastosowania haków szyn.Udoskonalenia i haki ruby
Chcę uniknąć łatania małp. Kiedy małpa łatanie go będzie działać jako taki
ActiveRecord::Base.class_eval do
after_find do
# do something with
my_method
end
def my_method
# something useful
end
end
udało mi się mieć metodę klasy robiąc coś takiego:
module ActiveRecordRefinements
refine ActiveRecord::Base.singleton_class do
def my_method
#something cool
end
end
end
Ale nie mogę uruchomić hak. Próbowałem używać self.used(klass)
, ale wydaje się, że nie można uzyskać poprawnej składni.
Każda pomoc jest mile widziane.
Dzięki.
Nie musisz wywoływać '# singleton_class' na' ActiveRecord :: Base', ponieważ udoskonalenia są singletonami. – Nathan
Próbuję dodać do DSL z AR. Coś jak '' ' class Foo
Max
Istnieje cienka linia między łataniem małpy i zastrzykiem zależności. Normalnie łatanie małp jest zdefiniowane jako przedefiniowanie podstawowego zachowania w sposób, który niekoniecznie będzie działał z przyszłymi wersjami jądra. Czysty model wprowadzania zależności próbuje uniknąć konfliktu i utrzymać minimalny ślad. – tadman