gvl_metrics_middleware 0.2.0 → 0.2.1
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 +4 -4
- data/Appraisals +6 -4
- data/CHANGELOG.md +4 -0
- data/README.md +2 -2
- data/gemfiles/rails_71.gemfile +1 -3
- data/gemfiles/rails_72.gemfile +1 -3
- data/gemfiles/rails_80.gemfile +1 -3
- data/gemfiles/rails_81.gemfile +13 -0
- data/gemfiles/rails_edge.gemfile +1 -3
- data/lib/gvl_metrics_middleware/railtie.rb +19 -12
- data/lib/gvl_metrics_middleware/version.rb +1 -1
- data/lib/gvl_metrics_middleware.rb +9 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 81e9afea6ad5c3271fb91da6b0f69efcd3e1f49153b7e5a278483701295ebbac
|
|
4
|
+
data.tar.gz: 22363d1d03ee82e7a5e6475226fdf73414d9b643728dd0da6c4b7f05b86c6b29
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4ba04171e7a5a1ae4eb7da1f9cbb32302d79e07679d05edc12f9d6dcc100bce0f514002368e94440f9b6cd00c313372d35b22accfda0905dae16083a29e26341
|
|
7
|
+
data.tar.gz: cdcf224fafb3879e806e8a033c5622431baf77c14fda3b76baef184f4e8cf60862ce41838527b31ebc831124349d6b4995da1248114d8af483e8a19027688fef
|
data/Appraisals
CHANGED
|
@@ -5,7 +5,6 @@ appraise "rails_edge" do
|
|
|
5
5
|
gem "rails"
|
|
6
6
|
gem "railties"
|
|
7
7
|
gem "activesupport"
|
|
8
|
-
gem "activemodel"
|
|
9
8
|
end
|
|
10
9
|
end
|
|
11
10
|
|
|
@@ -13,19 +12,22 @@ appraise "rails_80" do
|
|
|
13
12
|
gem "rails", "~> 8.0.0"
|
|
14
13
|
gem "railties", "~> 8.0.0"
|
|
15
14
|
gem "activesupport", "~> 8.0.0"
|
|
16
|
-
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
appraise "rails_81" do
|
|
18
|
+
gem "rails", "~> 8.1.0"
|
|
19
|
+
gem "railties", "~> 8.1.0"
|
|
20
|
+
gem "activesupport", "~> 8.1.0"
|
|
17
21
|
end
|
|
18
22
|
|
|
19
23
|
appraise "rails_72" do
|
|
20
24
|
gem "rails", "~> 7.2.0"
|
|
21
25
|
gem "railties", "~> 7.2.0"
|
|
22
26
|
gem "activesupport", "~> 7.2.0"
|
|
23
|
-
gem "activemodel", "~> 7.2.0"
|
|
24
27
|
end
|
|
25
28
|
|
|
26
29
|
appraise "rails_71" do
|
|
27
30
|
gem "rails", "~> 7.1.0"
|
|
28
31
|
gem "railties", "~> 7.1.0"
|
|
29
32
|
gem "activesupport", "~> 7.1.0"
|
|
30
|
-
gem "activemodel", "~> 7.1.0"
|
|
31
33
|
end
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
+
## [0.2.1] - 2025-11-14
|
|
4
|
+
|
|
5
|
+
- Fixed errors when middleware stack may have been modified ([#18](https://github.com/speedshop/gvl_metrics_middleware/pull/18))
|
|
6
|
+
|
|
3
7
|
## [0.2.0] - 2025-10-30
|
|
4
8
|
|
|
5
9
|
- Add sampling support ([#7](https://github.com/speedshop/gvl_metrics_middleware/pull/7)). Set `config.sampling_rate = 0.1` to sample 10% of requests/jobs (defaults to 1%).
|
data/README.md
CHANGED
|
@@ -15,7 +15,7 @@ gem 'gvl_metrics_middleware', git: "https://github.com/speedshop/gvl_metrics_mid
|
|
|
15
15
|
|
|
16
16
|
## Usage
|
|
17
17
|
|
|
18
|
-
The `gvl_metrics_middleware` automatically inserts the
|
|
18
|
+
The `gvl_metrics_middleware` automatically inserts the necessary middleware into your application’s stack. To get
|
|
19
19
|
started, configure a callback to handle the GVL metrics. Place the following configuration in your
|
|
20
20
|
application’s `config/initializers`directory:
|
|
21
21
|
|
|
@@ -112,7 +112,7 @@ where both the control and experiment groups ran identical code, and the differe
|
|
|
112
112
|
consistent with those reported in [Shopify's `gvltools`](https://github.com/Shopify/gvltools?tab=readme-ov-file#usage),
|
|
113
113
|
where the overhead was measured at 1-5% in a production environment.
|
|
114
114
|
|
|
115
|
-
As stated in [the README of `gvltools`](https://github.com/Shopify/gvltools?tab=readme-ov-file#usage)
|
|
115
|
+
As stated in [the README of `gvltools`](https://github.com/Shopify/gvltools?tab=readme-ov-file#usage), the exact
|
|
116
116
|
overhead is not yet known. However, unless you observe an immediate, significant jump in response times after
|
|
117
117
|
deployment, the overhead is negligible and should not impact application performance. This makes the middleware a
|
|
118
118
|
reliable choice for tracking GVL metrics in production environments.
|
data/gemfiles/rails_71.gemfile
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
1
|
# This file was generated by Appraisal
|
|
4
2
|
|
|
5
3
|
source "https://rubygems.org"
|
|
@@ -7,9 +5,9 @@ source "https://rubygems.org"
|
|
|
7
5
|
gem "minitest", "~> 5.16"
|
|
8
6
|
gem "rake", "~> 13.0"
|
|
9
7
|
gem "rubocop", require: false
|
|
8
|
+
gem "rack-attack", "~> 6.8"
|
|
10
9
|
gem "rails", "~> 7.1.0"
|
|
11
10
|
gem "railties", "~> 7.1.0"
|
|
12
11
|
gem "activesupport", "~> 7.1.0"
|
|
13
|
-
gem "rackup"
|
|
14
12
|
|
|
15
13
|
gemspec path: "../"
|
data/gemfiles/rails_72.gemfile
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
1
|
# This file was generated by Appraisal
|
|
4
2
|
|
|
5
3
|
source "https://rubygems.org"
|
|
@@ -7,9 +5,9 @@ source "https://rubygems.org"
|
|
|
7
5
|
gem "minitest", "~> 5.16"
|
|
8
6
|
gem "rake", "~> 13.0"
|
|
9
7
|
gem "rubocop", require: false
|
|
8
|
+
gem "rack-attack", "~> 6.8"
|
|
10
9
|
gem "rails", "~> 7.2.0"
|
|
11
10
|
gem "railties", "~> 7.2.0"
|
|
12
11
|
gem "activesupport", "~> 7.2.0"
|
|
13
|
-
gem "rackup"
|
|
14
12
|
|
|
15
13
|
gemspec path: "../"
|
data/gemfiles/rails_80.gemfile
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
1
|
# This file was generated by Appraisal
|
|
4
2
|
|
|
5
3
|
source "https://rubygems.org"
|
|
@@ -7,9 +5,9 @@ source "https://rubygems.org"
|
|
|
7
5
|
gem "minitest", "~> 5.16"
|
|
8
6
|
gem "rake", "~> 13.0"
|
|
9
7
|
gem "rubocop", require: false
|
|
8
|
+
gem "rack-attack", "~> 6.8"
|
|
10
9
|
gem "rails", "~> 8.0.0"
|
|
11
10
|
gem "railties", "~> 8.0.0"
|
|
12
11
|
gem "activesupport", "~> 8.0.0"
|
|
13
|
-
gem "rackup"
|
|
14
12
|
|
|
15
13
|
gemspec path: "../"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "minitest", "~> 5.16"
|
|
6
|
+
gem "rake", "~> 13.0"
|
|
7
|
+
gem "rubocop", require: false
|
|
8
|
+
gem "rack-attack", "~> 6.8"
|
|
9
|
+
gem "rails", "~> 8.1.0"
|
|
10
|
+
gem "railties", "~> 8.1.0"
|
|
11
|
+
gem "activesupport", "~> 8.1.0"
|
|
12
|
+
|
|
13
|
+
gemspec path: "../"
|
data/gemfiles/rails_edge.gemfile
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
1
|
# This file was generated by Appraisal
|
|
4
2
|
|
|
5
3
|
source "https://rubygems.org"
|
|
@@ -13,6 +11,6 @@ end
|
|
|
13
11
|
gem "minitest", "~> 5.16"
|
|
14
12
|
gem "rake", "~> 13.0"
|
|
15
13
|
gem "rubocop", require: false
|
|
16
|
-
gem "
|
|
14
|
+
gem "rack-attack", "~> 6.8"
|
|
17
15
|
|
|
18
16
|
gemspec path: "../"
|
|
@@ -8,23 +8,20 @@ module GvlMetricsMiddleware
|
|
|
8
8
|
config.gvl_metrics_middleware.enabled = !Rails.env.test?
|
|
9
9
|
config.gvl_metrics_middleware.safe_guard = Rails.env.production?
|
|
10
10
|
|
|
11
|
-
initializer "gvl_metrics_middleware"
|
|
12
|
-
|
|
13
|
-
GvlMetricsMiddleware.on_report_failure.nil? && GvlMetricsMiddleware.on_report_failure do |source, exception|
|
|
14
|
-
Rails.logger.error("GVL Metrics Middleware failed to report metrics from #{source}: #{exception.class} (#{exception.message})")
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
GvlMetricsMiddleware.safe_guard = app.config.gvl_metrics_middleware.safe_guard
|
|
18
|
-
end
|
|
11
|
+
initializer "gvl_metrics_middleware.rack" do |app|
|
|
12
|
+
app.config.middleware.insert(0, GvlMetricsMiddleware::Rack)
|
|
19
13
|
end
|
|
20
14
|
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
config.after_initialize do |app|
|
|
16
|
+
GvlMetricsMiddleware.enabled = app.config.gvl_metrics_middleware.enabled
|
|
17
|
+
setup_safe_guard(app.config)
|
|
18
|
+
configure_sidekiq_middleware(app.config)
|
|
23
19
|
end
|
|
24
20
|
|
|
25
|
-
|
|
26
|
-
if defined?(::Sidekiq) &&
|
|
21
|
+
def self.configure_sidekiq_middleware(app_config)
|
|
22
|
+
if defined?(::Sidekiq) && app_config.gvl_metrics_middleware.enabled
|
|
27
23
|
require "gvl_metrics_middleware/sidekiq"
|
|
24
|
+
|
|
28
25
|
::Sidekiq.configure_server do |config|
|
|
29
26
|
config.server_middleware do |chain|
|
|
30
27
|
chain.prepend(GvlMetricsMiddleware::Sidekiq)
|
|
@@ -32,5 +29,15 @@ module GvlMetricsMiddleware
|
|
|
32
29
|
end
|
|
33
30
|
end
|
|
34
31
|
end
|
|
32
|
+
|
|
33
|
+
def self.setup_safe_guard(app_config)
|
|
34
|
+
if app_config.gvl_metrics_middleware.enabled && app_config.gvl_metrics_middleware.safe_guard
|
|
35
|
+
GvlMetricsMiddleware.on_report_failure.nil? && GvlMetricsMiddleware.on_report_failure do |source, exception|
|
|
36
|
+
Rails.logger.error("GVL Metrics Middleware failed to report metrics from #{source}: #{exception.class} (#{exception.message})")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
GvlMetricsMiddleware.safe_guard = app_config.gvl_metrics_middleware.safe_guard
|
|
40
|
+
end
|
|
41
|
+
end
|
|
35
42
|
end
|
|
36
43
|
end
|
|
@@ -25,6 +25,14 @@ module GvlMetricsMiddleware
|
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
+
@@enabled = true
|
|
29
|
+
|
|
30
|
+
def self.enabled? = @@enabled
|
|
31
|
+
|
|
32
|
+
def self.enabled=(value)
|
|
33
|
+
@@enabled = value
|
|
34
|
+
end
|
|
35
|
+
|
|
28
36
|
@@on_report_failure = nil
|
|
29
37
|
|
|
30
38
|
def self.on_report_failure(&block)
|
|
@@ -62,6 +70,6 @@ module GvlMetricsMiddleware
|
|
|
62
70
|
return true if @@sampling_rate == 1.0
|
|
63
71
|
return false if @@sampling_rate == 0.0
|
|
64
72
|
|
|
65
|
-
rand < @@sampling_rate
|
|
73
|
+
enabled? && (rand < @@sampling_rate)
|
|
66
74
|
end
|
|
67
75
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gvl_metrics_middleware
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nate Berkopec
|
|
@@ -84,6 +84,7 @@ files:
|
|
|
84
84
|
- gemfiles/rails_71.gemfile
|
|
85
85
|
- gemfiles/rails_72.gemfile
|
|
86
86
|
- gemfiles/rails_80.gemfile
|
|
87
|
+
- gemfiles/rails_81.gemfile
|
|
87
88
|
- gemfiles/rails_edge.gemfile
|
|
88
89
|
- gvl-metrics.png
|
|
89
90
|
- lib/gvl_metrics_middleware.rb
|