gitlab-experiment 1.3.0 → 1.4.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: e34a0534e252b90b635ed280483d18741c2ac7034f5aadc68f14812b77baa0e7
4
- data.tar.gz: 96bb108c2888ffc97f28b59b00b3a631d1370782e9108a06e22bb8492ac79bef
3
+ metadata.gz: c1bda42d269c22b469ab0a942c38e01b3d718db2c4e7c4ffa61a41e0da53e74a
4
+ data.tar.gz: 020d283e9875365e5db338e1dfdfe57e3cf53e10a46d6f2d069603931f94bf50
5
5
  SHA512:
6
- metadata.gz: 2481560efcb4fafd00f64cadb7fd4199607cec596e168ce4eb72334f17ad812407441cb492412680caae3c5e7ff699cb455092dd4ae750c942badd9f3b52b304
7
- data.tar.gz: 3996ae0f5626023540ae3ad4aeaae2127407626ee369ce2edfa829379c074672bfc9840ecf96baec55d800e648c1bb18ece6fb54c96d3e1e03d0cabf757f6fce
6
+ metadata.gz: 558f12b6f92de538d024757f271194675d0ed863e50325debdcf16ddb2e20873df92e008dc20818962a5bbe536aba97c923345119c4a55f2855fc428e0cd43fa
7
+ data.tar.gz: dcebe030c7d8b232c5b4c261c894f9db21b48744c80b807642d07a772b9cc0e26ee94264e1a3aa2680326f94f7ae06f860349d0521449d3f2145974c6b3a84d9
@@ -7,10 +7,19 @@ module Gitlab
7
7
  klass.include(self).tap { |base| base.helper_method(:experiment) if with_helper }
8
8
  end
9
9
 
10
+ # An explicit `request:` keyword argument always takes precedence; when
11
+ # present, no auto-detection runs.
12
+ #
13
+ # Otherwise, `request` is auto-detected through implicit_experiment_request in this order:
14
+ # 1. A `request` method on `self` (the controller pattern).
15
+ # 2. A `@request` instance variable on `self` (the service pattern).
16
+ #
17
+ # Callers with `request` as a pure local variable should pass
18
+ # `request: request` explicitly.
10
19
  def experiment(name, variant_name = nil, **context, &block)
11
20
  raise ArgumentError, 'name is required' if name.nil?
12
21
 
13
- context[:request] ||= request if respond_to?(:request)
22
+ context[:request] ||= implicit_experiment_request
14
23
 
15
24
  base = Configuration.base_class.constantize
16
25
  klass = base.constantize(name) || base
@@ -20,6 +29,16 @@ module Gitlab
20
29
 
21
30
  instance.context.frozen? ? instance.run : instance.tap(&:run)
22
31
  end
32
+
33
+ private
34
+
35
+ def implicit_experiment_request
36
+ if respond_to?(:request)
37
+ request
38
+ elsif instance_variable_defined?(:@request)
39
+ instance_variable_get(:@request)
40
+ end
41
+ end
23
42
  end
24
43
  end
25
44
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  class Experiment
5
- VERSION = '1.3.0'
5
+ VERSION = '1.4.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-experiment
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-02-25 00:00:00.000000000 Z
11
+ date: 2026-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport