Sha256: 30692364733b1762541f8c257ad8d04073d9598aeedfd7097cf074aa960799fe

Contents?: true

Size: 931 Bytes

Versions: 23

Compression:

Stored size: 931 Bytes

Contents

# frozen_string_literal: true

require "anycable/rails/connections/session_proxy"

module AnyCable
  module Rails
    module Connections
      module PersistentSession
        def handle_open
          super.tap { commit_session! }
        end

        def handle_channel_command(*)
          super.tap { commit_session! }
        end

        def build_rack_request(env)
          return super unless socket.session

          super.tap do |req|
            req.env[::Rack::RACK_SESSION] =
              SessionProxy.new(req.env[::Rack::RACK_SESSION], socket.session)
          end
        end

        private

        def commit_session!
          return unless request_loaded? && request.session.respond_to?(:loaded?) && request.session.loaded?

          socket.session = request.session.to_json
        end
      end
    end
  end
end

AnyCable::Rails::Connection.prepend(
  AnyCable::Rails::Connections::PersistentSession
)

Version data entries

23 entries across 23 versions & 2 rubygems

Version Path
anycable-rails-core-1.5.3 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-core-1.5.2 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-core-1.5.1 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-core-1.5.0 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-core-1.5.0.rc.1 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-core-1.4.4 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-core-1.4.3 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-core-1.4.2 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-core-1.4.1 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-core-1.4.0 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-1.4.0 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-1.4.0.rc.4 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-1.4.0.rc.3 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-1.4.0.rc.2 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-1.4.0.rc.1 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-1.3.7 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-1.3.6 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-1.3.5 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-1.3.4 lib/anycable/rails/connections/persistent_session.rb
anycable-rails-1.3.3 lib/anycable/rails/connections/persistent_session.rb