Class: AnyCable::Rails::Middlewares::Executor

Inherits:
Middleware
  • Object
show all
Defined in:
lib/anycable/rails/middlewares/executor.rb

Overview

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(executor) ⇒ Executor



11
12
13
# File 'lib/anycable/rails/middlewares/executor.rb', line 11

def initialize(executor)
  @executor = executor
end

Instance Attribute Details

#executorObject (readonly)

Returns the value of attribute executor.



9
10
11
# File 'lib/anycable/rails/middlewares/executor.rb', line 9

def executor
  @executor
end

Instance Method Details

#call(method, message, metadata) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/anycable/rails/middlewares/executor.rb', line 15

def call(method, message, )
  sid = ["sid"]

  if ::Rails.respond_to?(:error)
    executor.wrap do
      ::Rails.error.record(context: {method: method, payload: message.to_h, sid: sid}) do
        Rails.with_socket_id(sid) { yield }
      end
    end
  else
    executor.wrap { Rails.with_socket_id(sid) { yield } }
  end
end