class Events::ProcessJob < ApplicationJob
def perform(payload)
payload = payload.deep_symbolize_keys
event_name = payload[:event_name] || payload[:name]
data = payload[:data] || payload[:payload] || {}
Events::Router.new.route(event_name, data)
end
end
Deploys happen while jobs are in the queue. Be defensive: accept both old and new payload shapes, and keep migrations forward-compatible. This prevents “deploy broke jobs” incidents.