To destroy reminder
# File app/workers/schedule_reminder_worker.rb, line 20 def self.destroy_reminder(id) jid = Sidekiq.redis { |conn| conn["#{self}:reminder-#{id}"] } Sidekiq::Status.cancel jid end
To set time for reminder
# File app/workers/schedule_reminder_worker.rb, line 5 def self.perform_at(run_at, schedule_id) jid = super Sidekiq.redis { |conn| conn["#{self}:reminder-#{schedule_id}"] = jid } end
To reschedule the reminder
# File app/workers/schedule_reminder_worker.rb, line 11 def self.reschedule(id, run_at) if Schedule.exists? id jid = Sidekiq.redis { |conn| conn["#{self}:reminder-#{id}"] } Sidekiq::Status.cancel jid perform_at(run_at, id) end end
To send reminder email
# File app/workers/schedule_reminder_worker.rb, line 26 def perform(schedule_id) @schedule = Schedule.find(schedule_id) @schedule.shared_with_users.find_each do |user| EventMailer.delay(queue: :mailer).reminder_email(@schedule.id, user.id) end Sidekiq.redis { |conn| conn.del "#{self.class}:reminder-#{schedule_id}" } if @schedule.frequency? @schedule.schedule_reminder end end