class Sidekiq::CurrentAttributes::Load
Public Class Methods
new(cattrs)
click to toggle source
# File lib/sidekiq/middleware/current_attributes.rb, line 61 def initialize(cattrs) @cattrs = cattrs end
Public Instance Methods
call(_, job, _, &block)
click to toggle source
# File lib/sidekiq/middleware/current_attributes.rb, line 65 def call(_, job, _, &block) klass_attrs = {} @cattrs.each do |(key, strklass)| next unless job.has_key?(key) klass_attrs[strklass.constantize] = job[key] end wrap(klass_attrs.to_a, &block) end
Private Instance Methods
wrap(klass_attrs, &block)
click to toggle source
# File lib/sidekiq/middleware/current_attributes.rb, line 79 def wrap(klass_attrs, &block) klass, attrs = klass_attrs.shift return block.call unless klass retried = false begin klass.set(attrs) do wrap(klass_attrs, &block) end rescue NoMethodError raise if retried # It is possible that the `CurrentAttributes` definition # was changed before the job started processing. attrs = attrs.select { |attr| klass.respond_to?(attr) } retried = true retry end end