Module: PandaPal::OrganizationConcerns::TaskScheduling

Extended by:
ActiveSupport::Concern
Includes:
SettingsValidation
Included in:
PandaPal::Organization
Defined in:
app/models/panda_pal/organization_concerns/task_scheduling.rb

Defined Under Namespace

Classes: ScheduledTaskExecutor

Instance Method Summary collapse

Methods included from SettingsValidation

#settings_structure, #validate_settings

Instance Method Details

#generate_scheduleObject



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'app/models/panda_pal/organization_concerns/task_scheduling.rb', line 116

def generate_schedule
  schedule = {}
  self.class._schedule_descriptors.values.each do |desc|
    cron_time = schedule_task_cron_time(desc)
    next unless cron_time.present?

    schedule["org:#{name}-#{desc[:key]}"] = {
      'cron' => cron_time,
      'queue' => desc[:queue],
      'class' => ScheduledTaskExecutor.to_s,
      'args' => [name, desc[:key]],
    }
  end
  schedule
end

#sync_scheduleObject



132
133
134
135
136
137
138
# File 'app/models/panda_pal/organization_concerns/task_scheduling.rb', line 132

def sync_schedule
  new_schedules = generate_schedule
  unschedule_tasks(new_schedules.keys)
  new_schedules.each do |k, v|
    Sidekiq.set_schedule(k, v)
  end
end