Class: GoodJob::MultiScheduler

Inherits:
Object
  • Object
show all
Defined in:
lib/good_job/multi_scheduler.rb

Overview

Delegates the interface of a single Scheduler to multiple Schedulers.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(schedulers) ⇒ MultiScheduler

Returns a new instance of MultiScheduler.

Parameters:



9
10
11
# File 'lib/good_job/multi_scheduler.rb', line 9

def initialize(schedulers)
  @schedulers = schedulers
end

Instance Attribute Details

#schedulersArray<Scheduler> (readonly)

Returns List of the scheduler delegates.

Returns:

  • (Array<Scheduler>)

    List of the scheduler delegates



6
7
8
# File 'lib/good_job/multi_scheduler.rb', line 6

def schedulers
  @schedulers
end

Instance Method Details

#create_thread(state = nil) ⇒ Boolean?

Delegates to Scheduler#create_thread.

Parameters:

  • state (Hash) (defaults to: nil)

Returns:

  • (Boolean, nil)


42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/good_job/multi_scheduler.rb', line 42

def create_thread(state = nil)
  results = []

  if state
    schedulers.any? do |scheduler|
      scheduler.create_thread(state).tap { |result| results << result }
    end
  else
    schedulers.each do |scheduler|
      results << scheduler.create_thread(state)
    end
  end

  if results.any?
    true
  elsif results.any?(false)
    false
  else # rubocop:disable Style/EmptyElse
    nil
  end
end

#restart(timeout: -1)) ⇒ void

This method returns an undefined value.

Delegates to Scheduler#restart.

Parameters:

  • timeout (Numeric, nil) (defaults to: -1))


35
36
37
# File 'lib/good_job/multi_scheduler.rb', line 35

def restart(timeout: -1)
  GoodJob._shutdown_all(schedulers, :restart, timeout: timeout)
end

#running?Boolean?

Delegates to Scheduler#running?.

Returns:

  • (Boolean, nil)


15
16
17
# File 'lib/good_job/multi_scheduler.rb', line 15

def running?
  schedulers.all?(&:running?)
end

#shutdown(timeout: -1)) ⇒ void

This method returns an undefined value.

Delegates to Scheduler#shutdown.

Parameters:

  • timeout (Numeric, nil) (defaults to: -1))


28
29
30
# File 'lib/good_job/multi_scheduler.rb', line 28

def shutdown(timeout: -1)
  GoodJob._shutdown_all(schedulers, timeout: timeout)
end

#shutdown?Boolean?

Delegates to Scheduler#shutdown?.

Returns:

  • (Boolean, nil)


21
22
23
# File 'lib/good_job/multi_scheduler.rb', line 21

def shutdown?
  schedulers.all?(&:shutdown?)
end