class Ruboty::Handlers::Cron
Constants
- NAMESPACE
Attributes
jobs[W]
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/ruboty/handlers/cron.rb, line 18 def initialize(*args) super remember end
Public Instance Methods
add(message)
click to toggle source
# File lib/ruboty/handlers/cron.rb, line 23 def add(message) job = create(message) message.reply("Job #{job.id} created") end
delete(message)
click to toggle source
# File lib/ruboty/handlers/cron.rb, line 28 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/ruboty/handlers/cron.rb, line 40 def list(message) message.reply(summary, code: true) end
resume(message)
click to toggle source
# File lib/ruboty/handlers/cron.rb, line 60 def resume(message) id = message[:id].to_i if jobs.has_key?(id) job = Ruboty::Cron::Job.new(jobs[id]) if job.suspended? job.resume(robot) jobs[id] = job.to_hash running_jobs[id] = job message.reply("Job #{id} resumed") else message.reply("Job #{id} is running") end else message.reply("Job #{id} does not exist") end end
suspend(message)
click to toggle source
# File lib/ruboty/handlers/cron.rb, line 44 def suspend(message) id = message[:id].to_i if jobs.has_key?(id) if running_jobs[id] running_jobs[id].suspend jobs[id] = running_jobs[id].to_hash running_jobs.delete(id) message.reply("Job #{id} suspended") else message.reply("Job #{id} had suspended") end else message.reply("Job #{id} does not exist") end end
Private Instance Methods
create(message)
click to toggle source
# File lib/ruboty/handlers/cron.rb, line 93 def create(message) job = Ruboty::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/ruboty/handlers/cron.rb, line 115 def empty_message "Job not found" end
generate_id()
click to toggle source
# File lib/ruboty/handlers/cron.rb, line 125 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/ruboty/handlers/cron.rb, line 119 def job_descriptions jobs.values.map do |attributes| Ruboty::Cron::Job.new(attributes).description end.join("\n") end
jobs()
click to toggle source
# File lib/ruboty/handlers/cron.rb, line 89 def jobs robot.brain.data[NAMESPACE] ||= {} end
remember()
click to toggle source
# File lib/ruboty/handlers/cron.rb, line 79 def remember jobs.each do |id, attributes| job = Ruboty::Cron::Job.new(attributes) unless job.suspended? running_jobs[id] = job job.start(robot) end end end
running_jobs()
click to toggle source
# File lib/ruboty/handlers/cron.rb, line 132 def running_jobs @running_jobs ||= {} end
summary()
click to toggle source
# File lib/ruboty/handlers/cron.rb, line 107 def summary if jobs.empty? empty_message else job_descriptions end end