Hej!
Staram się stworzyć do własnych potrzeb appkę, którą można rozszerzać za pomocą engine’ów. Na takie coś składa się oczywiście wiele spraw - widoki, modele, kontrolery, dekoratory i tak dalej ale chciał bym się na początek skupić na, chyba, najprostszej z nich - modelach.
Powiedzmy, że chciał bym dodać do modelu Post (klik) nową metodę new_method()
. Z niezliczonych artykułów, które przeczytałem wynika, że muszę użyć .class_eval
. O ile działa mi to doskonale jeśli użyje tego w pliku z oryginalnym modelem, to niestety nie chce zadziałać z poziomu engina.
Czyli - jeśli dopiszę do pliku post.rb
(oryginalny model) taki kod:
Post.class_eval do
def new_method(); end
end
to wszystko działa elegancko. Jeśli jednak stworzę sobie plik w enginie, to niestety już nie jest tak łatwo: https://github.com/mbajur/eval_test/blob/master/example_engine/app/models/post.rb
Czy ktoś był by na tyle dobry, aby wytłumaczyć mi jak totalnie początkującemu czemu mi to nie działa i co mogę zrobić, aby zadziałało tak jak bym tego chciał? Podkreślam, że zależy mi na tym, aby “załączanie” engineów odbywało się jedynie za pomocą Gemfile. Bez żadnych dodatkowych require’ów ze strony aplikacji głównej.
Z góry dzięki!
ps. tutaj repo przykładowej appki, instrukcja obsługi w readme: https://github.com/mbajur/eval_test