# 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