Class: DelayedJobWorkerPool::DSL

Inherits:
Object
  • Object
show all
Defined in:
lib/delayed_job_worker_pool/dsl.rb

Defined Under Namespace

Classes: NoWorkerGroupsDefined, NonUniqueGroupName

Constant Summary collapse

CALLBACK_SETTINGS =
[:after_preload_app, :on_worker_boot, :after_worker_boot, :after_worker_shutdown].freeze
DEFAULT_WORKER_GROUP_NAME =
:default

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ DSL

Returns a new instance of DSL.



21
22
23
24
# File 'lib/delayed_job_worker_pool/dsl.rb', line 21

def initialize(options)
  @options = options
  @options[:worker_groups] ||= {}
end

Class Method Details

.load(path) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/delayed_job_worker_pool/dsl.rb', line 11

def self.load(path)
  options = {}

  dsl = new(options)
  dsl.instance_eval(File.read(path), path, 1)
  dsl.assert_groups_defined!

  options
end

Instance Method Details

#assert_groups_defined!Object



41
42
43
44
45
# File 'lib/delayed_job_worker_pool/dsl.rb', line 41

def assert_groups_defined!
  return unless @options[:worker_groups].empty?

  raise NoWorkerGroupsDefined.new('No worker groups defined. Define groups using `worker_group`.')
end

#preload_app(preload = true) ⇒ Object



26
27
28
# File 'lib/delayed_job_worker_pool/dsl.rb', line 26

def preload_app(preload = true)
  @options[:preload_app] = preload
end

#worker_group(name = DEFAULT_WORKER_GROUP_NAME) {|group_options| ... } ⇒ Object

Yields:

  • (group_options)


30
31
32
33
34
35
36
37
38
39
# File 'lib/delayed_job_worker_pool/dsl.rb', line 30

def worker_group(name = DEFAULT_WORKER_GROUP_NAME)
  name_sym = name.to_sym
  if @options[:worker_groups].key?(name_sym)
    raise NonUniqueGroupName.new("Worker group name #{name_sym} is already in use")
  end

  group_options = WorkerGroupOptions.new
  yield(group_options)
  @options[:worker_groups][name_sym] = group_options
end