25 lines
717 B
Ruby
25 lines
717 B
Ruby
|
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
|