module ActiveGenie::Concerns::Loggable::ClassMethods
def with_logging_context(context_method, observer_proc = nil)
def with_logging_context(context_method, observer_proc = nil) original_method = instance_method(:call) define_method(:call) do |*args, **kwargs, &block| context = send(context_method, *args, **kwargs) bound_observer = observer_proc ? ->(log) { instance_exec(log, &observer_proc) } : nil ActiveGenie::Logger.with_context(context, observer: bound_observer) do original_method.bind(self).call(*args, **kwargs, &block) end end end