Class: SolidQueue::Supervisor

Inherits:
Processes::Base show all
Includes:
LifecycleHooks, Maintenance, Pidfiled, Signals
Defined in:
lib/solid_queue/supervisor.rb,
lib/solid_queue/supervisor/signals.rb,
lib/solid_queue/supervisor/pidfiled.rb

Direct Known Subclasses

AsyncSupervisor, ForkSupervisor

Defined Under Namespace

Modules: Maintenance, Pidfiled, Signals Classes: Pidfile

Instance Attribute Summary

Attributes inherited from Processes::Base

#name

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Processes::Base

#hostname, #metadata, #pid

Methods included from AppExecutor

#create_thread, #handle_thread_error, #wrap_in_app_executor

Methods included from Processes::Registrable

#process_id

Methods included from Processes::Procline

#procline

Methods included from Processes::Interruptible

#wake_up

Constructor Details

#initialize(configuration) ⇒ Supervisor

Returns a new instance of Supervisor.



26
27
28
29
30
31
32
33
# File 'lib/solid_queue/supervisor.rb', line 26

def initialize(configuration)
  @configuration = configuration

  @configured_processes = {}
  @process_instances = {}

  super
end

Class Method Details

.start(**options) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/solid_queue/supervisor.rb', line 11

def start(**options)
  SolidQueue.supervisor = true
  configuration = Configuration.new(**options)

  if configuration.valid?
    klass = configuration.mode.fork? ? ForkSupervisor : AsyncSupervisor
    klass.new(configuration).tap(&:start)
  else
    abort configuration.errors.full_messages.join("\n") + "\nExiting..."
  end
end

Instance Method Details

#kindObject



50
51
52
# File 'lib/solid_queue/supervisor.rb', line 50

def kind
  "Supervisor(#{mode})"
end

#startObject



35
36
37
38
39
40
41
42
43
# File 'lib/solid_queue/supervisor.rb', line 35

def start
  boot
  run_start_hooks

  start_processes
  launch_maintenance_task

  supervise
end

#stopObject



45
46
47
48
# File 'lib/solid_queue/supervisor.rb', line 45

def stop
  super
  run_stop_hooks
end