class Portal::JobRegistry

@api private @since 0.1.0

Attributes

jobs[R]

@return [Hash]

@api private @since 0.1.0

Public Class Methods

new() click to toggle source

@return [void]

@api private @since 0.1.0

# File lib/portal/job_registry.rb, line 10
def initialize
  @jobs = {}
  @lock = Sidekiq::Portal::Lock.new
end

Public Instance Methods

each(&block) click to toggle source

@param block [Block] @yield [job] @yieldparam job [Sidekiq::Portal::Job] @return [Enumerable]

@api private @since 0.1.0

# File lib/portal/job_registry.rb, line 56
def each(&block)
  thread_safe do
    block_given? ? jobs.each_value(&block) : jobs.each_value
  end
end
include?(job_klass) click to toggle source

@param job_klass [Class] @return [Boolean]

@api private @since 0.1.0

# File lib/portal/job_registry.rb, line 45
def include?(job_klass)
  thread_safe { jobs.key?(job_klass) }
end
register(job) click to toggle source

@param job [Sidekiq::Portal::Job] @return [void]

@api private @since 0.1.0

# File lib/portal/job_registry.rb, line 20
def register(job)
  thread_safe { jobs[job.klass] = job }
end
resolve(job_klass) click to toggle source

@param job_klass [Class] @return [Sidekiq::Portal::Job]

@api private @since 0.1.0

# File lib/portal/job_registry.rb, line 29
def resolve(job_klass)
  thread_safe do
    jobs.fetch(job_klass) do
      raise(
        Sidekiq::Portal::NonScheduledJobClassError,
        "Trying to work with non-scheduled job class \"#{job_klass}\""
      )
    end
  end
end

Private Instance Methods

thread_safe(&block) click to toggle source

@param block [Block] @return [Any]

@api private @since 0.1.0

# File lib/portal/job_registry.rb, line 75
def thread_safe(&block)
  @lock.thread_safe(&block)
end