Method: ActionCable::Channel::Base#perform_action

Defined in:
actioncable/lib/action_cable/channel/base.rb

#perform_action(data) ⇒ Object

Extract the action name from the passed data and process it via the channel. The process will ensure that the action requested is a public method on the channel declared by the user (so not one of the callbacks like #subscribed).



175
176
177
178
179
180
181
182
183
184
185
186
# File 'actioncable/lib/action_cable/channel/base.rb', line 175

def perform_action(data)
  action = extract_action(data)

  if processable_action?(action)
    payload = { channel_class: self.class.name, action: action, data: data }
    ActiveSupport::Notifications.instrument("perform_action.action_cable", payload) do
      dispatch_action(action, data)
    end
  else
    logger.error "Unable to process #{action_signature(action, data)}"
  end
end