Sha256: 374d6445dd64d943df7e52b84b90a5941615e7d4930afaedea79599d012bf7ac

Contents?: true

Size: 960 Bytes

Versions: 12

Compression:

Stored size: 960 Bytes

Contents

require "active_support/core_ext/class"
require "sidekiq"

module SyncMachine
  # Call EnsurePublication service via a Sidekiq job.
  class EnsurePublicationWorker
    include Sidekiq::Worker

    class_attribute :hooks

    [:build, :check_publishable, :publish, :after_publish].each do |hook|
      define_singleton_method(hook) do |&block|
        hooks[hook] = block
      end
    end

    def self.inherited(subclass)
      subclass.hooks = {}
    end

    def perform(subject_id, enqueue_time_str)
      subject = find_subject(subject_id)
      EnsurePublication.new(
        enqueue_time_str: enqueue_time_str,
        hooks: self.class.hooks,
        subject: subject,
        sync_module: SyncMachine.sync_module(self.class)
      ).run
    end

    private

    def find_subject(subject_id)
      sync_module = SyncMachine.sync_module(self.class)
      subject_class = sync_module.subject_class
      subject_class.find(subject_id)
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
sync_machine-1.1.1 lib/sync_machine/ensure_publication_worker.rb
sync_machine-1.1.0 lib/sync_machine/ensure_publication_worker.rb
sync_machine-1.0.0 lib/sync_machine/ensure_publication_worker.rb
sync_machine-0.8.1 lib/sync_machine/ensure_publication_worker.rb
sync_machine-0.8.0 lib/sync_machine/ensure_publication_worker.rb
sync_machine-0.7.0 lib/sync_machine/ensure_publication_worker.rb
sync_machine-0.6.0 lib/sync_machine/ensure_publication_worker.rb
sync_machine-0.5.0 lib/sync_machine/ensure_publication_worker.rb
sync_machine-0.4.0 lib/sync_machine/ensure_publication_worker.rb
sync_machine-0.3.0 lib/sync_machine/ensure_publication_worker.rb
sync_machine-0.2.0 lib/sync_machine/ensure_publication_worker.rb
sync_machine-0.1.0 lib/sync_machine/ensure_publication_worker.rb