lib/acidic_job/extensions/sidekiq.rb in acidic_job-1.0.0.pre16 vs lib/acidic_job/extensions/sidekiq.rb in acidic_job-1.0.0.pre17
- old
+ new
@@ -23,15 +23,19 @@
# called only from `AcidicJob::PerformAcidicly#perform_acidicly`
# and `AcidicJob::DeliverAcidicly#deliver_acidicly`
def serialize_with_arguments(args = [], _kwargs = nil)
# THIS IS A HACK THAT ESSENTIALLY COPIES THE CODE FROM THE SIDEKIQ CODEBASE TO MIMIC THE BEHAVIOR
+ # updated to handle Sidekiq v6.4.2 at latest
args = Array[args]
normalized_args = ::Sidekiq.load_json(::Sidekiq.dump_json(args))
item = { "class" => self, "args" => normalized_args }
dummy_sidekiq_client = ::Sidekiq::Client.new
normed = dummy_sidekiq_client.send :normalize_item, item
- dummy_sidekiq_client.send :process_single, item["class"], normed
+ redis_pool = dummy_sidekiq_client.instance_variable_get(:@redis_pool)
+ dummy_sidekiq_client.middleware.invoke(normed["class"], normed, normed["queue"], redis_pool) do
+ normed
+ end
end
end
def serialize_job(*args, **kwargs)
# `@args` is only set via `deserialize`; it is not a standard Sidekiq thing