class Wisper::ActiveJobBroadcaster::Wrapper

Public Instance Methods

perform(class_name, event, args) click to toggle source
# File lib/wisper_plus.rb, line 61
def perform(class_name, event, args)
  listener = class_name.constantize.new
  if listener.respond_to?(event)
    args = JSON.parse(args).map do |e|
      if e.is_a?(String) && e.starts_with?("gid://")
        begin
          GlobalID::Locator.locate(e)
        rescue ActiveRecord::RecordNotFound
          listener = nil
        end
      else
        e
      end
    end
    listener&.public_send(event, *args)
  end
end