Sha256: eda186d49de2c101b2811c3ed24b8e47eb31516d8d14919aab6a863277df17ea
Contents?: true
Size: 1.25 KB
Versions: 1
Compression:
Stored size: 1.25 KB
Contents
require "active_support/current_attributes" module Sidekiq ## # Automatically save and load any current attributes in the execution context # so context attributes "flow" from Rails actions into any associated jobs. # This can be useful for multi-tenancy, i18n locale, timezone, any implicit # per-request attribute. See +ActiveSupport::CurrentAttributes+. # # @example # # # in your initializer # require "sidekiq/middleware/current_attributes" # Sidekiq::CurrentAttributes.persist(Myapp::Current) # module CurrentAttributes class Save def initialize(cattr) @klass = cattr end def call(_, job, _, _) job["cattr"] = @klass.attributes yield end end class Load def initialize(cattr) @klass = cattr end def call(_, job, _, &block) if job.has_key?("cattr") @klass.set(job["cattr"], &block) else yield end end end def self.persist(klass) Sidekiq.configure_client do |config| config.client_middleware.add Save, klass end Sidekiq.configure_server do |config| config.client_middleware.add Save, klass config.server_middleware.add Load, klass end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sidekiq-6.3.1 | lib/sidekiq/middleware/current_attributes.rb |