0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-08 17:53:55 +08:00
discourse/app/jobs/scheduled/topic_timer_enqueuer.rb
Jarek Radosz fbb3bf3fe8
DEV: Enable Style/RedundantBegin rubocop rule (#40096)
(to be enabled in the shared config)

best reviewed with whitespace disabled
2026-05-19 18:44:54 +02:00

27 lines
842 B
Ruby
Vendored

# frozen_string_literal: true
module Jobs
# Runs periodically to look through topic timers that are ready to execute,
# and enqueues their related jobs.
#
# Any leftovers will be caught in the next run, because execute_at will
# be < now, and topic timers that have run are deleted on completion or
# otherwise have their execute_at time modified.
class TopicTimerEnqueuer < ::Jobs::Scheduled
every 1.minute
def execute(_args = nil)
TopicTimer.pending_timers.find_each do |timer|
# the typed job may not enqueue if it has already
# been scheduled with enqueue_at
timer.enqueue_typed_job
rescue => err
Discourse.warn_exception(
err,
message: "Error when attempting to enqueue topic timer job for timer #{timer.id}",
)
end
end
end
end