lib/good_job/job.rb in good_job-0.2.2 vs lib/good_job/job.rb in good_job-0.3.0

- old
+ new

@@ -1,6 +1,39 @@ module GoodJob class Job < ActiveRecord::Base include Lockable + self.table_name = 'good_jobs' + + def self.enqueue(active_job, scheduled_at: nil, create_with_advisory_lock: false) + good_job = nil + ActiveSupport::Notifications.instrument("enqueue_job.good_job", { active_job: active_job, scheduled_at: scheduled_at, create_with_advisory_lock: create_with_advisory_lock }) do |instrument_payload| + good_job = GoodJob::Job.new( + queue_name: active_job.queue_name, + priority: active_job.priority, + serialized_params: active_job.serialize, + scheduled_at: scheduled_at, + create_with_advisory_lock: create_with_advisory_lock + ) + + instrument_payload[:good_job] = good_job + + good_job.save! + active_job.provider_job_id = good_job.id + end + + good_job + end + + def perform + ActiveSupport::Notifications.instrument("before_perform_job.good_job", { good_job: self }) + ActiveSupport::Notifications.instrument("perform_job.good_job", { good_job: self }) do + params = serialized_params.merge( + "provider_job_id" => id + ) + ActiveJob::Base.execute(params) + + destroy! + end + end end end