I am a Sr. Software Developer at Oracle Cloud. The opinions expressed here are my own and not necessarily those of my employer.
Ruby on Rails has patterns for ApplicationRecord, ApplicationMailer, ApplicationJob, etc. Other gems follow this approach. Pundit has ApplicationPolicy and ActiveModelSerializers has AppliciationSerializer.
In post about Rails concerns I shared examples on how to extract common logic into modules. This post is about using base classes to DRY our code. We can extend
Application* pattern to other gems and our own classes. Draper does not have
ApplicationDecorator but we can create one.
Additonally our applications can have other POROs for forms, service objects, validators, etc. Where needed we can create those base
Application* classes and inherit from them.
At the end of the day this is just basic object oriented inheritance, use it where it makes sense. But this pattern makes things easy to follow.