class Sidekiq::Tip::Server::Middleware
Public Class Methods
new(options={})
click to toggle source
# File lib/sidekiq/tip/server/middleware.rb, line 5 def initialize(options={}) @start_at = options.fetch(:start_at, [0, 0, 0]) # hour, minutes, second @finish_at = options.fetch(:finish_at, [23, 59, 59]) # hour, minutes, second end
Public Instance Methods
call(worker, msg, queue) { || ... }
click to toggle source
# File lib/sidekiq/tip/server/middleware.rb, line 10 def call(worker, msg, queue) fetch_times(msg) if appropriate_time_interval? yield else reenqueue(msg, queue) end end
Private Instance Methods
appropriate_time_interval?()
click to toggle source
# File lib/sidekiq/tip/server/middleware.rb, line 35 def appropriate_time_interval? current_time.between?(start_time, finish_time) end
current_time()
click to toggle source
# File lib/sidekiq/tip/server/middleware.rb, line 49 def current_time Time.now.utc end
fetch_times(msg)
click to toggle source
# File lib/sidekiq/tip/server/middleware.rb, line 30 def fetch_times(msg) @start_at = msg.fetch('start_at', @start_at) @finish_at = msg.fetch('finish_at', @finish_at) end
finish_time()
click to toggle source
# File lib/sidekiq/tip/server/middleware.rb, line 44 def finish_time hour, min, sec = @finish_at Time.utc(current_time.year, current_time.month, current_time.day, hour, min, sec) end
next_start_time()
click to toggle source
# File lib/sidekiq/tip/server/middleware.rb, line 53 def next_start_time start_time + 86400 end
reenqueue(msg, queue)
click to toggle source
# File lib/sidekiq/tip/server/middleware.rb, line 22 def reenqueue(msg, queue) payload = Sidekiq.dump_json(msg) Sidekiq.redis do |conn| conn.zadd(queue, next_start_time.to_f.to_s, payload) end end
start_time()
click to toggle source
# File lib/sidekiq/tip/server/middleware.rb, line 39 def start_time hour, min, sec = @start_at Time.utc(current_time.year, current_time.month, current_time.day, hour, min, sec) end