class SidekiqRunner::SidekiqInstance

Constants

CONFIG_FILE_ATTRIBUTES
RUNNER_ATTRIBUTES

Attributes

config_blocks[R]
name[R]
queues[R]

Public Class Methods

new(name) click to toggle source
# File lib/sidekiq-runner/sidekiq_instance.rb, line 11
def initialize(name)
  raise "No sidekiq instance name given!" if name.empty?

  @name = name
  @queues = []

  @bundle_env   = true
  @chdir        = nil
  @requirefile  = nil
  @pidfile      = File.join(Dir.pwd, 'tmp', 'pids', "#{@name}.pid")
  @logfile      = File.join(Dir.pwd, 'log', "#{@name}.log")
  @concurrency  = 4
  @verbose      = false
  @tag          = name
  @rbtrace      = false
  @uid          = nil
  @gid          = nil
  @config_blocks = []
end

Public Instance Methods

add_queue(queue_name, weight = 1) click to toggle source
# File lib/sidekiq-runner/sidekiq_instance.rb, line 31
def add_queue(queue_name, weight = 1)
  raise "Cannot add the queue. The name is empty!" if queue_name.empty?
  raise "Cannot add the queue. The weight is not an integer!" unless weight.is_a? Integer
  raise "Cannot add the queue. The queue with \"#{queue_name}\" name already exist" if @queues.any? { |q| q.first == queue_name }

  @queues << [queue_name, weight]
end
build_start_command() click to toggle source
# File lib/sidekiq-runner/sidekiq_instance.rb, line 64
def build_start_command
  create_directories!

  cmd = []
  cmd << 'bundle exec' if bundle_env
  cmd << (rbtrace ? File.expand_path('../../script/sidekiq_rbtrace', __dir__) : 'sidekiq')
  cmd << "-c #{concurrency}"
  cmd << '-v' if verbose
  cmd << "-P #{pidfile}"
  cmd << "-e #{Rails.env}" if defined?(Rails)
  cmd << "-r #{requirefile}" if requirefile
  cmd << "-g '#{tag}'"

  queues.each do |q, w|
    cmd << "-q #{q},#{w}"
  end

  cmd.join(' ')
end
god_config(&block) click to toggle source
# File lib/sidekiq-runner/sidekiq_instance.rb, line 39
def god_config(&block)
  @config_blocks << block
end
merge_config_file!(yml) click to toggle source
# File lib/sidekiq-runner/sidekiq_instance.rb, line 43
def merge_config_file!(yml)
  # Get global configuration options.
  SidekiqInstance::CONFIG_FILE_ATTRIBUTES.each do |k|
    send("#{k}=", yml[k]) unless yml[k].nil?
  end

  # Override with instance-specific options.
  if (syml = yml[@name.to_sym]) && syml.is_a?(Hash)
    syml = Hash[syml.map { |k, v| [k.to_sym, v] }]

    SidekiqInstance::CONFIG_FILE_ATTRIBUTES.each do |k|
      send("#{k}=", syml[k]) unless syml[k].nil?
    end
  end
end
sane?() click to toggle source
# File lib/sidekiq-runner/sidekiq_instance.rb, line 59
def sane?
  raise "No queues given for #{@name}!" if @queues.empty?
  raise "No requirefile given for #{@name} and not in Rails environment!" if !defined?(Rails) && !requirefile
end

Private Instance Methods

create_directories!() click to toggle source
# File lib/sidekiq-runner/sidekiq_instance.rb, line 86
def create_directories!
  FileUtils.mkdir_p(File.dirname(logfile))
  FileUtils.mkdir_p(File.dirname(pidfile))
end