@@ -25,6 +25,7 @@ def schedule_tasks
2525 wrap_in_app_executor do
2626 persist_static_tasks
2727 reload_static_tasks
28+ reload_dynamic_tasks
2829 end
2930
3031 configured_tasks . each do |task |
@@ -42,11 +43,12 @@ def unschedule_tasks
4243 end
4344
4445 def task_keys
45- static_task_keys + dynamic_task_keys
46+ configured_tasks . map ( & :key )
4647 end
4748
48- def reload_dynamic_tasks
49+ def reschedule_dynamic_tasks
4950 wrap_in_app_executor do
51+ reload_dynamic_tasks
5052 schedule_created_dynamic_tasks
5153 unschedule_deleted_dynamic_tasks
5254 end
@@ -60,19 +62,15 @@ def static_task_keys
6062 end
6163
6264 def dynamic_tasks
63- dynamic_tasks_enabled? ? RecurringTask . dynamic : RecurringTask . none
64- end
65-
66- def dynamic_task_keys
67- dynamic_tasks . pluck ( :key )
65+ @dynamic_tasks ||= load_dynamic_tasks
6866 end
6967
7068 def dynamic_tasks_enabled?
7169 @dynamic_tasks_enabled
7270 end
7371
7472 def schedule_created_dynamic_tasks
75- dynamic_tasks . where . not ( key : scheduled_tasks . keys ) . each do |task |
73+ RecurringTask . dynamic . where . not ( key : scheduled_tasks . keys ) . each do |task |
7674 schedule_task ( task )
7775 end
7876 end
@@ -93,6 +91,14 @@ def reload_static_tasks
9391 @static_tasks = RecurringTask . static . where ( key : static_task_keys ) . to_a
9492 end
9593
94+ def reload_dynamic_tasks
95+ @dynamic_tasks = load_dynamic_tasks
96+ end
97+
98+ def load_dynamic_tasks
99+ dynamic_tasks_enabled? ? RecurringTask . dynamic . to_a : [ ]
100+ end
101+
96102 def schedule ( task )
97103 scheduled_task = Concurrent ::ScheduledTask . new ( task . delay_from_now , args : [ self , task , task . next_time ] ) do |thread_schedule , thread_task , thread_task_run_at |
98104 thread_schedule . schedule_task ( thread_task )
0 commit comments