Class: SolidQueue::Scheduler::RecurringSchedule
- Inherits:
-
Object
- Object
- SolidQueue::Scheduler::RecurringSchedule
show all
- Includes:
- AppExecutor
- Defined in:
- lib/solid_queue/scheduler/recurring_schedule.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
#create_thread, #handle_thread_error, #wrap_in_app_executor
Constructor Details
#initialize(static_tasks, dynamic_tasks_enabled: false) ⇒ RecurringSchedule
Returns a new instance of RecurringSchedule.
9
10
11
12
13
14
|
# File 'lib/solid_queue/scheduler/recurring_schedule.rb', line 9
def initialize(static_tasks, dynamic_tasks_enabled: false)
@static_tasks = Array(static_tasks).map { |task| RecurringTask.wrap(task) }.select(&:valid?)
@dynamic_tasks_enabled = dynamic_tasks_enabled
@scheduled_tasks = Concurrent::Hash.new
end
|
Instance Attribute Details
#scheduled_tasks ⇒ Object
Returns the value of attribute scheduled_tasks.
7
8
9
|
# File 'lib/solid_queue/scheduler/recurring_schedule.rb', line 7
def scheduled_tasks
@scheduled_tasks
end
|
Instance Method Details
16
17
18
|
# File 'lib/solid_queue/scheduler/recurring_schedule.rb', line 16
def configured_tasks
static_tasks + dynamic_tasks
end
|
#empty? ⇒ Boolean
20
21
22
|
# File 'lib/solid_queue/scheduler/recurring_schedule.rb', line 20
def empty?
scheduled_tasks.empty? && dynamic_tasks.empty?
end
|
#reschedule_dynamic_tasks ⇒ Object
49
50
51
52
53
54
55
|
# File 'lib/solid_queue/scheduler/recurring_schedule.rb', line 49
def reschedule_dynamic_tasks
wrap_in_app_executor do
reload_dynamic_tasks
schedule_created_dynamic_tasks
unschedule_deleted_dynamic_tasks
end
end
|
#schedule_task(task, run_at: task.next_time) ⇒ Object
36
37
38
|
# File 'lib/solid_queue/scheduler/recurring_schedule.rb', line 36
def schedule_task(task, run_at: task.next_time)
scheduled_tasks[task.key] = schedule(task, run_at: run_at)
end
|
#schedule_tasks ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/solid_queue/scheduler/recurring_schedule.rb', line 24
def schedule_tasks
wrap_in_app_executor do
persist_static_tasks
reload_static_tasks
reload_dynamic_tasks
end
configured_tasks.each do |task|
schedule_task(task)
end
end
|
#task_keys ⇒ Object
45
46
47
|
# File 'lib/solid_queue/scheduler/recurring_schedule.rb', line 45
def task_keys
configured_tasks.map(&:key)
end
|
#unschedule_tasks ⇒ Object
40
41
42
43
|
# File 'lib/solid_queue/scheduler/recurring_schedule.rb', line 40
def unschedule_tasks
scheduled_tasks.values.each(&:cancel)
scheduled_tasks.clear
end
|