Sha256: fdfea24a7253c7421ab93613690d18640cc924a23304d266c04ffff9b788d53b

Contents?: true

Size: 914 Bytes

Versions: 8

Compression:

Stored size: 914 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(&block)
        Rails.with_socket_id(request.headers[AnyCable.config.socket_id_header], &block)
      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

8 entries across 8 versions & 1 rubygems

Version Path
anycable-rails-core-1.5.3 lib/anycable/rails/socket_id_tracking.rb
anycable-rails-core-1.5.2 lib/anycable/rails/socket_id_tracking.rb
anycable-rails-core-1.5.1 lib/anycable/rails/socket_id_tracking.rb
anycable-rails-core-1.5.0 lib/anycable/rails/socket_id_tracking.rb
anycable-rails-core-1.5.0.rc.1 lib/anycable/rails/socket_id_tracking.rb
anycable-rails-core-1.4.4 lib/anycable/rails/socket_id_tracking.rb
anycable-rails-core-1.4.3 lib/anycable/rails/socket_id_tracking.rb
anycable-rails-core-1.4.2 lib/anycable/rails/socket_id_tracking.rb