houdini/lib/tasks/scheduler.rake
2021-04-23 12:59:42 -05:00

27 lines
892 B
Ruby

# frozen_string_literal: true
# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
require 'scheduled_jobs'
desc "For use with Heroku's Scheduler add-on"
# We use a single rake call so we can catch and send any errors that happen in the job
task :heroku_scheduled_job, [:name] => :environment do |_t, args|
job_name = args[:name]
# Fetch all the super admin emails so we can send a report
enum = ScheduledJobs.send(job_name)
results = ''
enum.each do |lamb|
result = lamb.call
results += "Success: #{result}\n"
rescue Exception => e
results += "Failure: #{e}\n"
end
GenericMailer.admin_notice(
subject: "Scheduled job results on #{Houdini.hoster.casual_name} for '#{job_name}'",
body: results.empty? ? 'No jobs to run today.' : results
).deliver_later
end