Class: PandaPal::OrganizationConcerns::TaskScheduling::ScheduledTaskExecutor

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Worker
Defined in:
app/models/panda_pal/organization_concerns/task_scheduling.rb

Instance Method Summary collapse

Instance Method Details

#perform(org_name, task_key) ⇒ Object



170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'app/models/panda_pal/organization_concerns/task_scheduling.rb', line 170

def perform(org_name, task_key)
  org = Organization.find_by!(name: org_name)
  task = Organization._schedule_descriptors[task_key]
  worker = task[:worker]

  Apartment::Tenant.switch(org.name) do
    if worker.is_a?(Proc)
      org.instance_exec(&worker)
    elsif worker.is_a?(Symbol)
      org.send(worker)
    elsif worker.is_a?(String)
      worker.constantize.perform_async
    elsif worker.is_a?(Class)
      worker.perform_async
    end
  end
end