Just a thought. In our library we have a command which we would like to extend in the application. Normally I would use a pub/sub model where the command would emit an event.
But maybe we could use callbacks.
class CreateStudy extend ActiveModel::Callbacks define_model_callbacks :create def call(form) if form.valid? @study = Study.new(form.study_attributes) run_callbacks :create do @study.save! end end end end
Using the callback we can add additional behaviour in our application
class CreateStudy after_create :add_site private def add_site # ... end end