Rails Engine Decorators
Extend Rails Engine's business logic (models, controllers, helpers, etc.) easily from your application or other engine.
This solution was first implemented in the Forem engine, see github.com/radar/forem/pull/260
Kunal Chaudhari, github.com/kunalchaudhari
Ryan Bigg, github.com/radar
Philip Arndt, github.com/parndt
Antonio Tapiador, github.com/atd
(From Forem's patch):
Standard practice for including such changes in your application or extension is to create a file within the relevant app/models or app/controllers directory with the original class name with _decorator appended.
### Adding a custom method to the Post model:
# app/decorators/models/forem/post_decorator.rb Forem::Post.class_eval do def some_method ... end end
### Adding a custom method to the PostsController:
# app/decorators/controllers/forem/posts_controller_decorator.rb Forem::PostsController.class_eval do def some_action ... end end
The exact same format can be used to redefine an existing method.