instance method periodically

Ruby on Rails 6.1.7.10

Since v5.2.8.1

Available in: v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

periodically(callback_or_method_name = nil, every:, &block)

Periodically performs a task on the channel, like updating an online user counter, polling a backend for new status messages, sending regular “heartbeat” messages, or doing some internal work and giving progress updates.

Pass a method name or lambda argument or provide a block to call. Specify the calling period in seconds using the every: keyword argument.

periodically :transmit_progress, every: 5.seconds

periodically every: 3.minutes do
  transmit action: :update_count, count: current_count
end

Parameters

callback_or_method_name opt = nil
every keyreq
block block
Source
# File actioncable/lib/action_cable/channel/periodic_timers.rb, line 31
        def periodically(callback_or_method_name = nil, every:, &block)
          callback =
            if block_given?
              raise ArgumentError, "Pass a block or provide a callback arg, not both" if callback_or_method_name
              block
            else
              case callback_or_method_name
              when Proc
                callback_or_method_name
              when Symbol
                -> { __send__ callback_or_method_name }
              else
                raise ArgumentError, "Expected a Symbol method name or a Proc, got #{callback_or_method_name.inspect}"
              end
            end

          unless every.kind_of?(Numeric) && every > 0
            raise ArgumentError, "Expected every: to be a positive number of seconds, got #{every.inspect}"
          end

          self.periodic_timers += [[ callback, every: every ]]
        end

Defined in actioncable/lib/action_cable/channel/periodic_timers.rb line 31 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActionCable::Channel::PeriodicTimers::ClassMethods

Type at least 2 characters to search.

↑↓ navigate · open · esc close