diff options
Diffstat (limited to 'activejob/lib/active_job/execution.rb')
-rw-r--r-- | activejob/lib/active_job/execution.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/activejob/lib/active_job/execution.rb b/activejob/lib/active_job/execution.rb new file mode 100644 index 0000000000..78ada3d908 --- /dev/null +++ b/activejob/lib/active_job/execution.rb @@ -0,0 +1,27 @@ +require 'active_support/rescuable' +require 'active_job/arguments' + +module ActiveJob + module Execution + extend ActiveSupport::Concern + + included do + include ActiveSupport::Rescuable + end + + def execute(job_id, *serialized_args) + self.job_id = job_id + self.arguments = Arguments.deserialize(serialized_args) + + run_callbacks :perform do + perform *arguments + end + rescue => exception + rescue_with_handler(exception) || raise(exception) + end + + def perform(*) + raise NotImplementedError + end + end +end |