module ActiveJob::Execution

def deserialize_arguments(serialized_args)

def deserialize_arguments(serialized_args)
  Arguments.deserialize(serialized_args)
end

def execute(job_id, *serialized_args)

def execute(job_id, *serialized_args)
  self.job_id    = job_id
  self.arguments = deserialize_arguments(serialized_args)
  run_callbacks :perform do
    perform(*arguments)
  end
rescue => exception
  rescue_with_handler(exception) || raise(exception)
end

def perform(*)

def perform(*)
  fail NotImplementedError
end