class Ellen::Handlers::Cron
Constants
- NAMESPACE
Attributes
jobs[W]
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/ellen/handlers/cron.rb, line 14 def initialize(*args) super remember end
Public Instance Methods
add(message)
click to toggle source
# File lib/ellen/handlers/cron.rb, line 19 def add(message) job = create(message) message.reply("Job #{job.id} created") end
delete(message)
click to toggle source
# File lib/ellen/handlers/cron.rb, line 24 def delete(message) id = message[:id].to_i if jobs.has_key?(id) jobs.delete(id) running_jobs[id].stop running_jobs.delete(id) message.reply("Job #{id} deleted") else message.reply("Job #{id} does not exist") end end
list(message)
click to toggle source
# File lib/ellen/handlers/cron.rb, line 36 def list(message) message.reply(summary, code: true) end
Private Instance Methods
create(message)
click to toggle source
# File lib/ellen/handlers/cron.rb, line 54 def create(message) job = Ellen::Cron::Job.new( message.original.except(:robot).merge( body: message[:body], id: generate_id, schedule: message[:schedule], ), ) jobs[job.id] = job.to_hash job.start(robot) running_jobs[job.id] = job job end
empty_message()
click to toggle source
# File lib/ellen/handlers/cron.rb, line 76 def empty_message "Job not found" end
generate_id()
click to toggle source
# File lib/ellen/handlers/cron.rb, line 86 def generate_id loop do id = rand(10000) break id unless jobs.has_key?(id) end end
job_descriptions()
click to toggle source
# File lib/ellen/handlers/cron.rb, line 80 def job_descriptions jobs.values.map do |attributes| Ellen::Cron::Job.new(attributes).description end.join("\n") end
jobs()
click to toggle source
# File lib/ellen/handlers/cron.rb, line 50 def jobs robot.brain.data[NAMESPACE] ||= {} end
remember()
click to toggle source
# File lib/ellen/handlers/cron.rb, line 42 def remember jobs.each do |id, attributes| job = Ellen::Cron::Job.new(attributes) running_jobs[id] = job job.start(robot) end end
running_jobs()
click to toggle source
# File lib/ellen/handlers/cron.rb, line 93 def running_jobs @running_jobs ||= {} end
summary()
click to toggle source
# File lib/ellen/handlers/cron.rb, line 68 def summary if jobs.empty? empty_message else job_descriptions end end