posthog-rails 3.12.3 → 3.13.0
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dbadf59825cbf2d519a1eab2aa36e56cba2bc9c395076857e50bc126e41300b0
|
|
4
|
+
data.tar.gz: de897b215980ee6bcbbfe54416073fed3d5b9321fce30443dacb015a7785b073
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 33068f5f9b2673d0f9acf9f1acb20f50a8f99c04e1182911d9245c539e8d2566a3c42fb6da125d89853a7cadadf187754b3d49e24666a46d274800bc9badf82f
|
|
7
|
+
data.tar.gz: d94d7cff285e97a7769683f1349689b770d8ddb3610ceb0f21cf68067ca56b0fe2ffbb103f2c5720fd39270cc3d84f6c8fb9e9c4e39fb83e2fb65a8da35123c3
|
|
@@ -37,6 +37,12 @@ PostHog::Rails.configure do |config|
|
|
|
37
37
|
# making it easier to identify affected users and debug user-specific issues.
|
|
38
38
|
# config.current_user_method = :current_user
|
|
39
39
|
|
|
40
|
+
# Or provide a resolver for apps that store user context outside controllers,
|
|
41
|
+
# such as ActiveSupport::CurrentAttributes. The resolver takes precedence over
|
|
42
|
+
# current_user_method and may accept the controller as an argument.
|
|
43
|
+
# config.current_user_resolver = proc { Current.user }
|
|
44
|
+
# config.current_user_resolver = proc { |controller| controller.current_user }
|
|
45
|
+
|
|
40
46
|
# Additional exception classes to exclude from reporting
|
|
41
47
|
# These are added to the default excluded exceptions
|
|
42
48
|
# config.excluded_exceptions = [
|
|
@@ -69,20 +69,40 @@ module PostHog
|
|
|
69
69
|
def extract_distinct_id(env)
|
|
70
70
|
# Prefer authenticated Rails user context. Request/tracing context is
|
|
71
71
|
# applied later by the core capture path if this returns nil.
|
|
72
|
-
|
|
73
|
-
controller = env['action_controller.instance']
|
|
74
|
-
method_name = PostHog::Rails.config&.current_user_method || :current_user
|
|
72
|
+
return nil unless PostHog::Rails.config&.capture_user_context
|
|
75
73
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return user_id if present?(user_id)
|
|
80
|
-
end
|
|
81
|
-
end
|
|
74
|
+
user = extract_current_user(env['action_controller.instance'])
|
|
75
|
+
user_id = extract_user_id(user) if user
|
|
76
|
+
return user_id if present?(user_id)
|
|
82
77
|
|
|
83
78
|
nil
|
|
84
79
|
end
|
|
85
80
|
|
|
81
|
+
def extract_current_user(controller)
|
|
82
|
+
resolver = PostHog::Rails.config&.current_user_resolver
|
|
83
|
+
return resolve_current_user(resolver, controller) if resolver
|
|
84
|
+
|
|
85
|
+
method_name = PostHog::Rails.config&.current_user_method || :current_user
|
|
86
|
+
return unless controller.respond_to?(method_name, true)
|
|
87
|
+
|
|
88
|
+
controller.send(method_name)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def resolve_current_user(resolver, controller)
|
|
92
|
+
call_current_user_resolver(resolver, controller)
|
|
93
|
+
rescue StandardError => e
|
|
94
|
+
PostHog::Logging.logger.warn("current_user_resolver failed: #{e.message}")
|
|
95
|
+
nil
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def call_current_user_resolver(resolver, controller)
|
|
99
|
+
if resolver.arity.zero?
|
|
100
|
+
controller ? controller.instance_exec(&resolver) : resolver.call
|
|
101
|
+
elsif controller
|
|
102
|
+
resolver.call(controller)
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
86
106
|
def extract_user_id(user)
|
|
87
107
|
# Use configured method if specified
|
|
88
108
|
method_name = PostHog::Rails.config&.user_id_method
|
|
@@ -32,6 +32,10 @@ module PostHog
|
|
|
32
32
|
# @return [Symbol] Method name to call on controller to get the current user. Defaults to :current_user.
|
|
33
33
|
attr_accessor :current_user_method
|
|
34
34
|
|
|
35
|
+
# @return [Proc, nil] Callable used to resolve the current user. When set, this takes precedence over
|
|
36
|
+
# current_user_method. The callable may accept the controller instance or no arguments.
|
|
37
|
+
attr_accessor :current_user_resolver
|
|
38
|
+
|
|
35
39
|
# @return [Symbol, nil] Method name to call on the user object to get distinct_id. When nil, tries:
|
|
36
40
|
# posthog_distinct_id, distinct_id, id, pk, uuid in order.
|
|
37
41
|
attr_accessor :user_id_method
|
|
@@ -68,6 +72,7 @@ module PostHog
|
|
|
68
72
|
@use_tracing_headers = true
|
|
69
73
|
@capture_user_context = true
|
|
70
74
|
@current_user_method = :current_user
|
|
75
|
+
@current_user_resolver = nil
|
|
71
76
|
@user_id_method = nil
|
|
72
77
|
@logs_enabled = false
|
|
73
78
|
@logs_forward_rails_logger = true
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: posthog-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.13.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- PostHog
|
|
@@ -29,14 +29,14 @@ dependencies:
|
|
|
29
29
|
requirements:
|
|
30
30
|
- - "~>"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '3.
|
|
32
|
+
version: '3.13'
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '3.
|
|
39
|
+
version: '3.13'
|
|
40
40
|
description: Automatic exception tracking and instrumentation for Ruby on Rails applications
|
|
41
41
|
using PostHog
|
|
42
42
|
email: engineering@posthog.com
|