class Rage::Cable::Channel
def set_up_periodic_timers
def set_up_periodic_timers return if @__periodic_timers_set_up @__channels = Set.new @__periodic_timers.each do |callback, every| ::Iodine.run_every((every * 1000).to_i) do slice_length = (@__channels.length / 20.0).ceil if slice_length != 0 @__channels.each_slice(slice_length) do |slice| Fiber.schedule do slice.each { |channel| callback.call(channel) } rescue => e Rage.logger.error("Unhandled exception has occured - #{e.class} (#{e.message}):\n#{e.backtrace.join("\n")}") end end end end end @__periodic_timers_set_up = true end