From feca23fae8015cca71ead68ad151cfe970ea1242 Mon Sep 17 00:00:00 2001 From: James Lamont <958588+jylamont@users.noreply.github.com> Date: Fri, 21 Feb 2025 18:31:42 -0500 Subject: [PATCH] improve: Only load async workers if deps available --- lib/vero.rb | 6 ++++++ lib/vero/sucker_punch_worker.rb | 17 ----------------- lib/vero/{ => workers}/resque_worker.rb | 8 +++----- lib/vero/{ => workers}/sidekiq_worker.rb | 6 +++--- lib/vero/workers/sucker_punch_worker.rb | 13 +++++++++++++ 5 files changed, 25 insertions(+), 25 deletions(-) delete mode 100644 lib/vero/sucker_punch_worker.rb rename lib/vero/{ => workers}/resque_worker.rb (58%) rename lib/vero/{ => workers}/sidekiq_worker.rb (66%) create mode 100644 lib/vero/workers/sucker_punch_worker.rb diff --git a/lib/vero.rb b/lib/vero.rb index 8a21314..01759f2 100644 --- a/lib/vero.rb +++ b/lib/vero.rb @@ -19,6 +19,12 @@ "unsubscribe_api" => "UnsubscribeAPI" ) loader.ignore("#{__dir__}/generators") + +loader.push_dir("#{__dir__}/vero/workers", namespace: Vero) +loader.ignore("#{__dir__}/vero/workers/resque_worker") unless defined?(Resque) +loader.ignore("#{__dir__}/vero/workers/sidekiq_worker") unless defined?(::Sidekiq) +loader.ignore("#{__dir__}/vero/workers/sucker_punch_worker") unless defined?(SuckerPunch) + loader.setup require "vero/railtie" if defined?(Rails) diff --git a/lib/vero/sucker_punch_worker.rb b/lib/vero/sucker_punch_worker.rb deleted file mode 100644 index 32b496e..0000000 --- a/lib/vero/sucker_punch_worker.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -require "sucker_punch" - -class Vero::SuckerPunchWorker - include SuckerPunch::Job - - def perform(api_class, domain, options) - new_options = options.transform_keys(&:to_sym) - - api_class.new(domain, new_options).perform - - Vero::App.log(self, "method: #{api_class.name}, options: #{options.to_json}, response: job performed") - rescue => e - Vero::App.log(self, "method: #{api_class.name}, options: #{options.to_json}, response: #{e.message}") - end -end diff --git a/lib/vero/resque_worker.rb b/lib/vero/workers/resque_worker.rb similarity index 58% rename from lib/vero/resque_worker.rb rename to lib/vero/workers/resque_worker.rb index 7c7f2d1..0e12371 100644 --- a/lib/vero/resque_worker.rb +++ b/lib/vero/workers/resque_worker.rb @@ -6,10 +6,8 @@ class Vero::ResqueWorker @queue = :vero def self.perform(api_class, domain, options) - new_options = options.transform_keys(&:to_sym) - - api_class.constantize.new(domain, new_options).perform - - Vero::App.log(self, "method: #{api_class}, options: #{options.to_json}, response: resque job queued") + Vero::Senders::Base.new.call(api_class, domain, options) + rescue => e + Vero::App.log(self, "method: #{api_class}, options: #{options.to_json}, response: #{e.message}") end end diff --git a/lib/vero/sidekiq_worker.rb b/lib/vero/workers/sidekiq_worker.rb similarity index 66% rename from lib/vero/sidekiq_worker.rb rename to lib/vero/workers/sidekiq_worker.rb index ee3ed61..81107fb 100644 --- a/lib/vero/sidekiq_worker.rb +++ b/lib/vero/workers/sidekiq_worker.rb @@ -6,8 +6,8 @@ class Vero::SidekiqWorker include ::Sidekiq::Worker def perform(api_class, domain, options) - api_class.constantize.new(domain, options).perform - - Vero::App.log(self, "method: #{api_class}, options: #{options.to_json}, response: sidekiq job queued") + Vero::Senders::Base.new.call(api_class, domain, options) + rescue => e + Vero::App.log(self, "method: #{api_class}, options: #{options.to_json}, response: #{e.message}") end end diff --git a/lib/vero/workers/sucker_punch_worker.rb b/lib/vero/workers/sucker_punch_worker.rb new file mode 100644 index 0000000..2049cb0 --- /dev/null +++ b/lib/vero/workers/sucker_punch_worker.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require "sucker_punch" + +class Vero::SuckerPunchWorker + include SuckerPunch::Job + + def perform(api_class, domain, options) + Vero::Senders::Base.new.call(api_class, domain, options) + rescue => e + Vero::App.log(self, "method: #{api_class}, options: #{options.to_json}, response: #{e.message}") + end +end