diff options
author | Cristian Bica <cristian.bica@gmail.com> | 2014-08-25 17:34:50 +0300 |
---|---|---|
committer | Cristian Bica <cristian.bica@gmail.com> | 2014-09-03 23:01:46 +0300 |
commit | 1e237b4e44b7de564c7d6b331dd2f2243c4113fd (patch) | |
tree | c272b813a4968815026d86f6b47ab9839ce3ab03 /activejob/lib/active_job/execution.rb | |
parent | 5db4e7f0ec2957f8641d5af884bd39e31d795597 (diff) | |
download | rails-1e237b4e44b7de564c7d6b331dd2f2243c4113fd.tar.gz rails-1e237b4e44b7de564c7d6b331dd2f2243c4113fd.tar.bz2 rails-1e237b4e44b7de564c7d6b331dd2f2243c4113fd.zip |
Active Job refactoring
Diffstat (limited to 'activejob/lib/active_job/execution.rb')
-rw-r--r-- | activejob/lib/active_job/execution.rb | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/activejob/lib/active_job/execution.rb b/activejob/lib/active_job/execution.rb index 0e7b5bdd72..d6d67c46e3 100644 --- a/activejob/lib/active_job/execution.rb +++ b/activejob/lib/active_job/execution.rb @@ -4,15 +4,29 @@ require 'active_job/arguments' module ActiveJob module Execution extend ActiveSupport::Concern + include ActiveSupport::Rescuable - included do - include ActiveSupport::Rescuable - end + module ClassMethods + # Performs the job immediately. + # + # MyJob.perform_now("mike") + # + def perform_now(*args) + job_or_instantiate(*args).perform_now + end - def execute(job_id, *serialized_args) - self.job_id = job_id - self.arguments = deserialize_arguments(serialized_args) + def execute(job_data) #:nodoc: + job = deserialize(job_data) + job.perform_now + end + end + # Performs the job immediately. The job is not sent to the queueing adapter + # and will block the execution until it's finished. + # + # MyJob.new(*args).perform_now + def perform_now + deserialize_arguments_if_needed run_callbacks :perform do perform(*arguments) end @@ -23,11 +37,5 @@ module ActiveJob def perform(*) fail NotImplementedError end - - private - def deserialize_arguments(serialized_args) - Arguments.deserialize(serialized_args) - end - end end |