Sha256: 7ce635570e829da99978e3f88895f99bfed2f8e516e041e390ba17a69612e346

Contents?: true

Size: 904 Bytes

Versions: 6

Compression:

Stored size: 904 Bytes

Contents

# frozen_string_literal: true

module AnyCable
  module Rails
    module SocketIdTrackingController
      extend ActiveSupport::Concern

      included do
        around_action :anycable_tracking_socket_id
      end

      private

      def anycable_tracking_socket_id(&)
        Rails.with_socket_id(request.headers[AnyCable.config.socket_id_header], &)
      end
    end

    module SocketIdTrackingJob
      extend ActiveSupport::Concern

      attr_accessor :cable_socket_id

      def serialize
        return super unless Rails.current_socket_id

        super.merge("cable_socket_id" => Rails.current_socket_id)
      end

      def deserialize(job_data)
        super
        self.cable_socket_id = job_data["cable_socket_id"]
      end

      included do
        around_perform do |job, block|
          Rails.with_socket_id(job.cable_socket_id, &block)
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
anycable-rails-core-1.6.0.rc.3 lib/anycable/rails/socket_id_tracking.rb
anycable-rails-core-1.6.0.rc.2 lib/anycable/rails/socket_id_tracking.rb
anycable-rails-core-1.5.6 lib/anycable/rails/socket_id_tracking.rb
anycable-rails-core-1.6.0.rc.1 lib/anycable/rails/socket_id_tracking.rb
anycable-rails-core-1.5.5 lib/anycable/rails/socket_id_tracking.rb
anycable-rails-core-1.5.4 lib/anycable/rails/socket_id_tracking.rb