5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/lcp_ruby/events/dispatcher.rb', line 5
def dispatch(event_name:, record:, changes: {}, request_params: nil)
model_name = infer_model_name(record)
handlers = HandlerRegistry.handlers_for(model_name, event_name)
last_result = nil
handlers.each do |handler_class|
context = {
record: record,
changes: changes,
current_user: Current.user,
event_name: event_name,
request_params: request_params
}
if handler_class.async?
AsyncHandlerJob.perform_later(handler_class.name, context_to_args(context, record))
else
last_result = handler_class.new(context).call
end
end
last_result
end
|