From 075b8d2585fbccacdffbcf6c893abb81031dc51f Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 18 Jan 2023 15:02:42 +1100 Subject: [PATCH] Add Rails standard ApplicationJob for consistency New Rails apps come with this class already, the job generator creates it for every new job and Rubocop requires it as well. Let's make our lives easier and use the same structure as other Rails projects. This class may be handy one day. --- .rubocop_todo.yml | 13 ------------- app/jobs/application_job.rb | 10 ++++++++++ app/jobs/bulk_invoice_job.rb | 2 +- app/jobs/heartbeat_job.rb | 2 +- app/jobs/order_cycle_closing_job.rb | 2 +- app/jobs/order_cycle_notification_job.rb | 2 +- app/jobs/subscription_confirm_job.rb | 2 +- app/jobs/subscription_placement_job.rb | 2 +- spec/services/job_processor_spec.rb | 2 +- 9 files changed, 17 insertions(+), 20 deletions(-) create mode 100644 app/jobs/application_job.rb diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 9724d70967..2e7cb246a5 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -684,19 +684,6 @@ Rails/ApplicationController: Exclude: - 'engines/dfc_provider/app/controllers/dfc_provider/base_controller.rb' -# Offense count: 6 -# This cop supports unsafe autocorrection (--autocorrect-all). -Rails/ApplicationJob: - Exclude: - - 'app/jobs/bulk_invoice_job.rb' - - 'app/jobs/heartbeat_job.rb' - - 'app/jobs/order_cycle_closing_job.rb' - - 'app/jobs/order_cycle_notification_job.rb' - - 'app/jobs/report_job.rb' - - 'app/jobs/subscription_confirm_job.rb' - - 'app/jobs/subscription_placement_job.rb' - - 'spec/services/job_processor_spec.rb' - # Offense count: 1 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/ApplicationMailer: diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb new file mode 100644 index 0000000000..2b85cac4d7 --- /dev/null +++ b/app/jobs/application_job.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +# Rails standard class for common job code. +class ApplicationJob < ActiveJob::Base + # Automatically retry jobs that encountered a deadlock + # retry_on ActiveRecord::Deadlocked + + # Most jobs are safe to ignore if the underlying records are no longer available + # discard_on ActiveJob::DeserializationError +end diff --git a/app/jobs/bulk_invoice_job.rb b/app/jobs/bulk_invoice_job.rb index 29e68c1088..0957ef393a 100644 --- a/app/jobs/bulk_invoice_job.rb +++ b/app/jobs/bulk_invoice_job.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class BulkInvoiceJob < ActiveJob::Base +class BulkInvoiceJob < ApplicationJob def perform(order_ids, filepath) pdf = CombinePDF.new diff --git a/app/jobs/heartbeat_job.rb b/app/jobs/heartbeat_job.rb index bd7e864eb2..f6d237a59e 100644 --- a/app/jobs/heartbeat_job.rb +++ b/app/jobs/heartbeat_job.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class HeartbeatJob < ActiveJob::Base +class HeartbeatJob < ApplicationJob def perform Spree::Config.last_job_queue_heartbeat_at = Time.now.in_time_zone end diff --git a/app/jobs/order_cycle_closing_job.rb b/app/jobs/order_cycle_closing_job.rb index e44d0a54a1..31ca6fb2a2 100644 --- a/app/jobs/order_cycle_closing_job.rb +++ b/app/jobs/order_cycle_closing_job.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class OrderCycleClosingJob < ActiveJob::Base +class OrderCycleClosingJob < ApplicationJob def perform return if recently_closed_order_cycles.empty? diff --git a/app/jobs/order_cycle_notification_job.rb b/app/jobs/order_cycle_notification_job.rb index 2dfb731c93..c713e12472 100644 --- a/app/jobs/order_cycle_notification_job.rb +++ b/app/jobs/order_cycle_notification_job.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true # Delivers an email with a report of the order cycle to each of its suppliers -class OrderCycleNotificationJob < ActiveJob::Base +class OrderCycleNotificationJob < ApplicationJob def perform(order_cycle_id) order_cycle = OrderCycle.find(order_cycle_id) order_cycle.suppliers.each do |supplier| diff --git a/app/jobs/subscription_confirm_job.rb b/app/jobs/subscription_confirm_job.rb index 9bdc409a3d..ee7bacec74 100644 --- a/app/jobs/subscription_confirm_job.rb +++ b/app/jobs/subscription_confirm_job.rb @@ -3,7 +3,7 @@ require 'order_management/subscriptions/summarizer' # Confirms orders of unconfirmed proxy orders in recently closed Order Cycles -class SubscriptionConfirmJob < ActiveJob::Base +class SubscriptionConfirmJob < ApplicationJob def perform confirm_proxy_orders! end diff --git a/app/jobs/subscription_placement_job.rb b/app/jobs/subscription_placement_job.rb index 8c9caf5221..fe15e99113 100644 --- a/app/jobs/subscription_placement_job.rb +++ b/app/jobs/subscription_placement_job.rb @@ -2,7 +2,7 @@ require 'order_management/subscriptions/summarizer' -class SubscriptionPlacementJob < ActiveJob::Base +class SubscriptionPlacementJob < ApplicationJob def perform proxy_orders.each do |proxy_order| place_order_for(proxy_order) diff --git a/spec/services/job_processor_spec.rb b/spec/services/job_processor_spec.rb index 041c80d5d4..3fc4ad1677 100644 --- a/spec/services/job_processor_spec.rb +++ b/spec/services/job_processor_spec.rb @@ -8,7 +8,7 @@ MiniRacer::Platform.set_flags!(:single_threaded) require 'spec_helper' -class TestJob < ActiveJob::Base +class TestJob < ApplicationJob def initialize @file = Tempfile.new("test-job-result") super