Sha256: f1763ee3796684734d446965a5a1fa2a97ad0b291bf4e71d782e7f94a8bcf9f0
Contents?: true
Size: 1.45 KB
Versions: 2
Compression:
Stored size: 1.45 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 include Sidekiq::ClientMiddleware def initialize(cattr) @klass = cattr end def call(_, job, _, _) attrs = @klass.attributes if job.has_key?("cattr") job["cattr"].merge!(attrs) else job["cattr"] = attrs end yield end end class Load include Sidekiq::ServerMiddleware 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sidekiq-6.5.1 | lib/sidekiq/middleware/current_attributes.rb |
sidekiq-6.5.0 | lib/sidekiq/middleware/current_attributes.rb |