brainzlab 0.1.31 → 0.1.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c7573fc851c73fe6b684611c10fb6799369c4817cc48b2fa7b18c6e84ac2188
4
- data.tar.gz: 792060817bb43eafa993a0a34206d7fd53b30d94ebb861205b02775243f9292d
3
+ metadata.gz: 2c27f671d247f5b7274905767ed060ec3bfc90c7e2389b8fe117fb300c09a59b
4
+ data.tar.gz: 3af6ac68bd7042f00aa16defa1c68d170653a9b053fe98cb375760b6f72bc14a
5
5
  SHA512:
6
- metadata.gz: a16f37708f020bdfa8f3aaf3131ef7cbb572b086cea2ec1567eb56e2d810042ed90b2ff8f17c1d84401b50bbe1a66f1fb221b1ad8948c2df8d28b44aecf1f605
7
- data.tar.gz: 3dd6909b4dc67fa7cb47767f6ca001e7df4547ebe5c1a99f08efe12f8d0285da58f62ef99f9ad9a9884b7526a12cd7a6018be45993b0dee131dda696fa37fb47
6
+ metadata.gz: 571ec070d0ff6d1f3503245a6c0e201d4d81903fda8a0d6ddf316ae7148c4bee6deb93299b76e5fc22839747d9f827cbf68da46dc04cb7d01abf2685580fb647
7
+ data.tar.gz: 9af9570ce725917a5093a9efbc46f81b13c454bb044549057eb49e43fa717e2750d28d580db055171bcb7e9d4c2cc2173e283bb47e7154510a16f1c82ac2ee3e
@@ -30,8 +30,12 @@ module BrainzLab
30
30
  end
31
31
  end
32
32
 
33
- # Add request context middleware (runs early)
34
- app.middleware.insert_after ActionDispatch::RequestId, BrainzLab::Rails::Middleware
33
+ # Add request context middleware. Gated on `enabled` so the kill switch
34
+ # (BRAINZLAB_SDK_ENABLED=false) fully removes it — it previously loaded
35
+ # unconditionally, so disabling didn't stop its session interference.
36
+ if BrainzLab.configuration.enabled
37
+ app.middleware.insert_after ActionDispatch::RequestId, BrainzLab::Rails::Middleware
38
+ end
35
39
 
36
40
  # Add DevTools middlewares if enabled
37
41
  if BrainzLab.configuration.devtools_enabled
@@ -220,16 +224,10 @@ module BrainzLab
220
224
  # Store request_id in thread local for log subscriber
221
225
  Thread.current[:brainzlab_request_id] = request_id
222
226
 
223
- # Capture session_id - access session to ensure it's loaded
224
- if request.session.respond_to?(:id)
225
- # Force session load by accessing it
226
- session_id = begin
227
- request.session.id
228
- rescue StandardError
229
- nil
230
- end
231
- context.session_id = session_id.to_s if session_id.present?
232
- end
227
+ # NOTE: session_id is captured AFTER @app.call (see below), never here.
228
+ # Forcing a session load on the way in — before the app's session
229
+ # middleware and any reset_session (login) — drops the session on
230
+ # cookie/active_record_store apps, causing login loops.
233
231
 
234
232
  # Capture full request info for Reflex
235
233
  context.request_method = request.request_method
@@ -276,6 +274,19 @@ module BrainzLab
276
274
 
277
275
  status, headers, response = @app.call(env)
278
276
 
277
+ # Capture session_id now that the app (and its session middleware) has
278
+ # run. Read it only if the session was already loaded — never force a
279
+ # load — so we never disturb the session lifecycle / Set-Cookie.
280
+ begin
281
+ rack_session = env['rack.session']
282
+ if rack_session && (!rack_session.respond_to?(:loaded?) || rack_session.loaded?)
283
+ sid = rack_session.respond_to?(:id) ? rack_session.id : nil
284
+ context.session_id = sid.to_s if sid && !sid.to_s.empty?
285
+ end
286
+ rescue StandardError
287
+ nil
288
+ end
289
+
279
290
  # Add breadcrumb for response
280
291
  BrainzLab::Reflex.add_breadcrumb(
281
292
  "Response #{status}",
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BrainzLab
4
- VERSION = '0.1.31'
4
+ VERSION = '0.1.32'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brainzlab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.31
4
+ version: 0.1.32
5
5
  platform: ruby
6
6
  authors:
7
7
  - BrainzLab