diff --git a/apartment-sidekiq.gemspec b/apartment-sidekiq.gemspec index 94b2d61..a5ce1f3 100644 --- a/apartment-sidekiq.gemspec +++ b/apartment-sidekiq.gemspec @@ -22,6 +22,5 @@ Gem::Specification.new do |spec| spec.add_development_dependency "rake" spec.add_development_dependency 'minitest' - spec.add_dependency 'apartment', '>= 1.0' spec.add_dependency 'sidekiq', '>= 2.11' end diff --git a/lib/apartment-sidekiq.rb b/lib/apartment-sidekiq.rb index 0516b96..19a9832 100644 --- a/lib/apartment-sidekiq.rb +++ b/lib/apartment-sidekiq.rb @@ -1 +1,3 @@ -require 'apartment/sidekiq' \ No newline at end of file +require 'apartment/sidekiq' +require 'sidekiq/enterprise/unique' if Sidekiq.const_defined?(:Enterprise) +require 'sidekiq/job' diff --git a/lib/apartment/sidekiq/version.rb b/lib/apartment/sidekiq/version.rb index 7231e01..9952ca5 100644 --- a/lib/apartment/sidekiq/version.rb +++ b/lib/apartment/sidekiq/version.rb @@ -1,5 +1,7 @@ +# frozen_string_literal: true + module Apartment module Sidekiq - VERSION = "1.2.0" + VERSION = '1.3.0' end end diff --git a/lib/sidekiq/enterprise/unique.rb b/lib/sidekiq/enterprise/unique.rb new file mode 100644 index 0000000..91f74cd --- /dev/null +++ b/lib/sidekiq/enterprise/unique.rb @@ -0,0 +1,16 @@ +module Sidekiq + module Enterprise + module Unique + def self.context_for(_worker, job) + args = job['args'] + args = args[0]['arguments'] if job['class'] == 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper' + [ + job['wrapped'] || job['class'], + job['queue'], + args, + Apartment::Tenant.current + ] + end + end + end +end diff --git a/lib/sidekiq/job.rb b/lib/sidekiq/job.rb new file mode 100644 index 0000000..ee06c70 --- /dev/null +++ b/lib/sidekiq/job.rb @@ -0,0 +1,11 @@ +module Sidekiq + module JobApartmentExtensions + def display_class + [@item['apartment'], super.to_s].reject(&:blank?).join(': ') + end + end + + class Job + prepend JobApartmentExtensions + end +end