houdini/lib/tasks/scheduler.rake

26 lines
806 B
Ruby
Raw Normal View History

# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
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|
begin
result = lamb.call
results += "Success: #{result}\n"
rescue Exception => e
results += "Failure: #{e}\n"
end
end
GenericMailer.delay.admin_notice({
subject: "Scheduled job results on CommitChange for '#{job_name}'",
body: results.empty? ? "No jobs to run today." : results
})
end