class Portal

@api public @since 0.1.0

@api public @since 0.1.0

@api public @since 0.1.0

Constants

ArgumentError

@api pulbic @since 0.1.0

ConfusingJobConfigError

@api public @since 0.1.0

CoreDependencyNotFoundError

@api public @since 0.1.0

Error

@api public @since 0.1.0

JobConfigurationNotFoundError

@api public @since 0.1.0

NonSchedulableJobError

@api public @since 0.1.0

NonScheduledJobClassError

@api public @since 0.1.0

UnsupportedCoreDependencyError

@api public @since 0.1.0

VERSION

@return [String]

@api public @since 0.1.0

Attributes

config[R]

@return [Sidekiq::Portal::Config]

@api public @since 0.1.0

job_manager[R]

@return [Sidekiq::Portal::JobManager]

@api private @since 0.1.0

job_runner[R]

@return [Sidekiq::Portal::JobRunner]

@api private @since 0.1.0

Public Class Methods

new(&configuration) click to toggle source

@param configuration [Block] @yield [config] @yieldparam config [Qonfig::Settings] @yieldreturn [void] @return [void]

@api public @since 0.1.0

# File lib/sidekiq_portal.rb, line 44
def initialize(&configuration)
  @lock = Sidekiq::Portal::Lock.new
  thread_safe { setup!(&configuration) }
end

Public Instance Methods

configure(&configuration) click to toggle source

@param configuration [Block] @yield [config] @yieldparam config [Qonfig::DataSet] @yieldreturn [void] @return [void]

@api public @since 0.1.0

# File lib/sidekiq_portal.rb, line 73
def configure(&configuration)
  thread_safe { config.configure(&configuration) }
end
reload!(&configuration)
Alias for: setup!
run_all() click to toggle source

@return [void]

@api public @since 0.1.0

# File lib/sidekiq_portal.rb, line 98
def run_all
  thread_safe do
    job_manager.each_time_point do |time_point|
      ::Timecop.freeze(time_point) do
        job_manager.each_job { |job| job_runner.run(job) }
      end
    end
  end
end
run_job(job_klass) click to toggle source

@param job_klass [Class] @return [void]

@api public @since 0.1.0

# File lib/sidekiq_portal.rb, line 82
def run_job(job_klass)
  thread_safe do
    raise(
      Sidekiq::Portal::NonSchedulableJobError,
      "#{job_klas} is not schedulable"
    ) unless job_manager.runnable?(job_klass)

    portal_job = job_manager.resolve(job_klass)
    job_runner.run(portal_job)
  end
end
setup!(&configuration) click to toggle source

@param configuration [Block] @return [void]

@api private @since 0.1.0

# File lib/sidekiq_portal.rb, line 54
def setup!(&configuration)
  thread_safe do
    Sidekiq::Portal::CoreExtensions.load!

    @config = Sidekiq::Portal::Config.new(&configuration)
    @job_manager = Sidekiq::Portal::JobManager::Builder.build(@config)
    @job_runner = Sidekiq::Portal::JobRunner::Builder.build(@config)
  end
end
Also aliased as: reload!

Private Instance Methods

thread_safe(&block) click to toggle source

@param block [Block] @return [Any]

@api private @since 0.1.0

# File lib/sidekiq_portal.rb, line 127
def thread_safe(&block)
  @lock.thread_safe(&block)
end