houdini/lib/tasks/scheduler.rake

26 lines
809 B
Ruby
Raw Normal View History

# frozen_string_literal: true
# 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|
result = lamb.call
results += "Success: #{result}\n"
rescue Exception => e
results += "Failure: #{e}\n"
end
GenericMailer.delay.admin_notice(
subject: "Scheduled job results on CommitChange for '#{job_name}'",
body: results.empty? ? 'No jobs to run today.' : results
)
end