Class: Tantot::Strategy::Sidekiq

Inherits:
Object
  • Object
show all
Defined in:
lib/tantot/strategy/sidekiq.rb

Defined Under Namespace

Classes: Worker

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.marshal(changes_by_model) ⇒ Object



21
22
23
24
25
# File 'lib/tantot/strategy/sidekiq.rb', line 21

def self.marshal(changes_by_model)
  changes_by_model.each.with_object({}) do |(model_class, changes), hash|
    hash[model_class.name] = changes
  end
end

.unmarshal(changes_by_model) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/tantot/strategy/sidekiq.rb', line 27

def self.unmarshal(changes_by_model)
  changes_by_model.each.with_object({}) do |(model_class_name, changes_by_id), model_hash|
    model_hash[model_class_name.constantize] = changes_by_id.each.with_object({}) do |(id, changes), change_hash|
      change_hash[id.to_i] = changes
    end
  end
end

Instance Method Details

#run(agent, changes_by_model) ⇒ Object



14
15
16
17
18
19
# File 'lib/tantot/strategy/sidekiq.rb', line 14

def run(agent, changes_by_model)
  queue = agent.options[:queue] || Tantot.config.sidekiq_queue
  ::Sidekiq::Client.push('class' => Tantot::Strategy::Sidekiq::Worker,
                         'args' => [agent.id, Tantot::Strategy::Sidekiq.marshal(changes_by_model)],
                         'queue' => queue)
end