yabeda-httpx 0.1.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 +7 -0
- data/.github/workflows/gem-push.yml +36 -0
- data/.gitignore +11 -0
- data/CHANGELOG.md +20 -0
- data/Gemfile +8 -0
- data/LICENSE.txt +21 -0
- data/README.md +201 -0
- data/Rakefile +8 -0
- data/bin/console +11 -0
- data/bin/setup +8 -0
- data/lib/yabeda/httpx/version.rb +7 -0
- data/lib/yabeda/httpx.rb +77 -0
- data/yabeda-httpx.gemspec +42 -0
- metadata +129 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 0053b46b3ddf877d33cad27da037a9a5d63ce664da42484715f00e690b9b5130
|
|
4
|
+
data.tar.gz: 5d77497eea67f1f996176769fc02ae423601e409b9b36b38c10ac02e7dd9a64f
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 810e68f8e512bae0287c9508967bfaa79afbd8d8518892baaaf78cc447a312ff766b5ab7dbb74b5cdc9d4a3db9dc8152bd5ce7ea1c18dac7b663fc90e9ca571d
|
|
7
|
+
data.tar.gz: a8d28764d57170b6f22e19eae1360b8abfe2f9fc8a7c149c2acfc0ce6c6e1dde5a8a1c80b39dc39d9636271468d187d70c8e3b6b813e9e1b2e4896936d762b1c
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: Ruby Gem
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build:
|
|
10
|
+
name: Build + Publish
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
packages: write
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Set up Ruby
|
|
20
|
+
uses: ruby/setup-ruby@v1
|
|
21
|
+
with:
|
|
22
|
+
ruby-version: '3.3'
|
|
23
|
+
bundler-cache: true
|
|
24
|
+
|
|
25
|
+
- name: Build gem
|
|
26
|
+
run: gem build yabeda-httpx.gemspec
|
|
27
|
+
|
|
28
|
+
- name: Publish to RubyGems
|
|
29
|
+
run: |
|
|
30
|
+
mkdir -p $HOME/.gem
|
|
31
|
+
touch $HOME/.gem/credentials
|
|
32
|
+
chmod 0600 $HOME/.gem/credentials
|
|
33
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
|
34
|
+
gem push *.gem
|
|
35
|
+
env:
|
|
36
|
+
GEM_HOST_API_KEY: "${{secrets.GEM_HOST_API_KEY}}"
|
data/.gitignore
ADDED
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.1.0] - 2024-02-05
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Initial release
|
|
15
|
+
- `Yabeda::Httpx.instrument` method to add metrics to HTTPX sessions
|
|
16
|
+
- `httpx_requests_total` counter for tracking request counts
|
|
17
|
+
- `httpx_responses_total` counter for tracking responses by status
|
|
18
|
+
- `httpx_errors_total` counter for tracking request errors
|
|
19
|
+
- `httpx_request_duration` histogram for tracking request latency
|
|
20
|
+
- Support for HTTPX callbacks plugin (requires HTTPX >= 1.2.0)
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Jon David Schober
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Yabeda::Httpx
|
|
2
|
+
|
|
3
|
+
[](https://badge.fury.io/rb/yabeda-httpx)
|
|
4
|
+
[](LICENSE.txt)
|
|
5
|
+
|
|
6
|
+
A [Yabeda](https://github.com/yabeda-rb/yabeda) plugin for monitoring [HTTPX](https://gitlab.com/os85/httpx) HTTP client requests. This gem provides automatic instrumentation for external HTTP calls made with HTTPX, exposing metrics for request counts, response times, and errors.
|
|
7
|
+
|
|
8
|
+
## Why Use This Gem?
|
|
9
|
+
|
|
10
|
+
HTTPX is a modern, feature-rich HTTP client for Ruby. When making external API calls, it's crucial to monitor:
|
|
11
|
+
|
|
12
|
+
- **Request latency**: Track how long external services take to respond
|
|
13
|
+
- **Error rates**: Detect issues with external dependencies
|
|
14
|
+
- **Request volume**: Understand traffic patterns to external services
|
|
15
|
+
- **Status code distribution**: Monitor success vs. failure rates
|
|
16
|
+
|
|
17
|
+
This gem integrates seamlessly with Yabeda's ecosystem to provide these insights with minimal configuration.
|
|
18
|
+
|
|
19
|
+
## Requirements
|
|
20
|
+
|
|
21
|
+
- Ruby 2.7 or higher
|
|
22
|
+
- [HTTPX](https://gitlab.com/os85/httpx) >= 1.2.0 (for callbacks plugin support)
|
|
23
|
+
- [Yabeda](https://github.com/yabeda-rb/yabeda) >= 0.6
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
Add this line to your application's Gemfile:
|
|
28
|
+
|
|
29
|
+
```ruby
|
|
30
|
+
gem 'yabeda-httpx'
|
|
31
|
+
gem 'yabeda-prometheus' # or another exporter
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
And then execute:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
$ bundle install
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Usage
|
|
41
|
+
|
|
42
|
+
### Basic Usage
|
|
43
|
+
|
|
44
|
+
```ruby
|
|
45
|
+
require 'yabeda/httpx'
|
|
46
|
+
|
|
47
|
+
# Create an HTTPX session and instrument it
|
|
48
|
+
http = HTTPX.plugin(:persistent)
|
|
49
|
+
http = Yabeda::Httpx.instrument(http)
|
|
50
|
+
|
|
51
|
+
# Make requests as normal - metrics are automatically collected
|
|
52
|
+
response = http.get("https://api.example.com/users")
|
|
53
|
+
response = http.post("https://api.example.com/orders", json: { item: "widget" })
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### With Rails
|
|
57
|
+
|
|
58
|
+
In a Rails application, you might create an instrumented client in an initializer or service:
|
|
59
|
+
|
|
60
|
+
```ruby
|
|
61
|
+
# config/initializers/http_client.rb
|
|
62
|
+
require 'yabeda/httpx'
|
|
63
|
+
|
|
64
|
+
module HttpClient
|
|
65
|
+
def self.session
|
|
66
|
+
@session ||= Yabeda::Httpx.instrument(
|
|
67
|
+
HTTPX.plugin(:persistent, :follow_redirects).with(
|
|
68
|
+
timeout: { read_timeout: 30 }
|
|
69
|
+
)
|
|
70
|
+
)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Then use it in your application:
|
|
76
|
+
|
|
77
|
+
```ruby
|
|
78
|
+
# In a service or controller
|
|
79
|
+
response = HttpClient.session.get("https://api.stripe.com/v1/charges")
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### With Additional HTTPX Plugins
|
|
83
|
+
|
|
84
|
+
The instrumentation works with any HTTPX plugins:
|
|
85
|
+
|
|
86
|
+
```ruby
|
|
87
|
+
http = HTTPX
|
|
88
|
+
.plugin(:persistent)
|
|
89
|
+
.plugin(:proxy)
|
|
90
|
+
.plugin(:follow_redirects)
|
|
91
|
+
.with(timeout: { read_timeout: 60 })
|
|
92
|
+
|
|
93
|
+
http = Yabeda::Httpx.instrument(http)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Exposed Metrics
|
|
97
|
+
|
|
98
|
+
| Metric Name | Type | Labels | Description |
|
|
99
|
+
|-------------|------|--------|-------------|
|
|
100
|
+
| `httpx_requests_total` | counter | `host`, `method` | Total number of HTTP requests initiated |
|
|
101
|
+
| `httpx_responses_total` | counter | `host`, `method`, `status` | Total number of HTTP responses received |
|
|
102
|
+
| `httpx_errors_total` | counter | `host`, `method`, `error_class` | Total number of request errors (connection failures, timeouts, etc.) |
|
|
103
|
+
| `httpx_request_duration` | histogram | `host`, `method`, `status` | Request duration in seconds |
|
|
104
|
+
|
|
105
|
+
### Histogram Buckets
|
|
106
|
+
|
|
107
|
+
The request duration histogram uses the following buckets (in seconds):
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10, 30, 60, 90
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
This covers a range from 10ms to 90 seconds, suitable for most external API calls.
|
|
114
|
+
|
|
115
|
+
## Example Prometheus Queries
|
|
116
|
+
|
|
117
|
+
### Request Rate by Host
|
|
118
|
+
|
|
119
|
+
```promql
|
|
120
|
+
sum(rate(httpx_requests_total[5m])) by (host)
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Error Rate
|
|
124
|
+
|
|
125
|
+
```promql
|
|
126
|
+
sum(rate(httpx_errors_total[5m])) / sum(rate(httpx_requests_total[5m])) * 100
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### p95 Latency
|
|
130
|
+
|
|
131
|
+
```promql
|
|
132
|
+
histogram_quantile(0.95, sum(rate(httpx_request_duration_bucket[5m])) by (le))
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Requests by Status Code
|
|
136
|
+
|
|
137
|
+
```promql
|
|
138
|
+
sum(rate(httpx_responses_total[5m])) by (status)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Grafana Dashboard
|
|
142
|
+
|
|
143
|
+
A sample Grafana dashboard JSON is available in the repository. Import it to visualize:
|
|
144
|
+
|
|
145
|
+
- Total requests and request rate
|
|
146
|
+
- Error rate percentage
|
|
147
|
+
- Latency percentiles (p50, p90, p99)
|
|
148
|
+
- Requests breakdown by host and HTTP method
|
|
149
|
+
- Error tracking by host and error class
|
|
150
|
+
|
|
151
|
+
## Configuration
|
|
152
|
+
|
|
153
|
+
The gem automatically configures metrics when required. No additional configuration is needed.
|
|
154
|
+
|
|
155
|
+
If you need custom bucket sizes, you can override the `BUCKETS` constant before requiring the gem:
|
|
156
|
+
|
|
157
|
+
```ruby
|
|
158
|
+
Yabeda::Httpx::BUCKETS = [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5].freeze
|
|
159
|
+
require 'yabeda/httpx'
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## How It Works
|
|
163
|
+
|
|
164
|
+
The gem uses HTTPX's `:callbacks` plugin (introduced in v1.2.0) to hook into the request lifecycle:
|
|
165
|
+
|
|
166
|
+
1. **`on_request_started`**: Records the start time and increments the request counter
|
|
167
|
+
2. **`on_response_completed`**: Calculates duration and records response metrics
|
|
168
|
+
3. **`on_request_error`**: Captures connection errors, timeouts, and other failures
|
|
169
|
+
|
|
170
|
+
This approach has minimal overhead and doesn't interfere with HTTPX's normal operation.
|
|
171
|
+
|
|
172
|
+
## Development
|
|
173
|
+
|
|
174
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt.
|
|
175
|
+
|
|
176
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
|
177
|
+
|
|
178
|
+
## Contributing
|
|
179
|
+
|
|
180
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/jondavidschober/yabeda-httpx.
|
|
181
|
+
|
|
182
|
+
1. Fork it
|
|
183
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
184
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
185
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
|
186
|
+
5. Create a new Pull Request
|
|
187
|
+
|
|
188
|
+
## License
|
|
189
|
+
|
|
190
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
|
191
|
+
|
|
192
|
+
## Credits
|
|
193
|
+
|
|
194
|
+
Created by [Jon David Schober](https://github.com/jondavidschober) at [Datavine](https://getdatanamic.com).
|
|
195
|
+
|
|
196
|
+
## See Also
|
|
197
|
+
|
|
198
|
+
- [Yabeda](https://github.com/yabeda-rb/yabeda) - Extensible framework for collecting metrics
|
|
199
|
+
- [HTTPX](https://gitlab.com/os85/httpx) - A Ruby HTTP library for tomorrow... and beyond!
|
|
200
|
+
- [yabeda-prometheus](https://github.com/yabeda-rb/yabeda-prometheus) - Prometheus exporter for Yabeda
|
|
201
|
+
- [yabeda-http_requests](https://github.com/yabeda-rb/yabeda-http_requests) - Similar gem for Net::HTTP
|
data/Rakefile
ADDED
data/bin/console
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "bundler/setup"
|
|
5
|
+
require "yabeda/httpx"
|
|
6
|
+
|
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
|
9
|
+
|
|
10
|
+
require "irb"
|
|
11
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/lib/yabeda/httpx.rb
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "yabeda"
|
|
4
|
+
require "yabeda/httpx/version"
|
|
5
|
+
|
|
6
|
+
module Yabeda
|
|
7
|
+
module Httpx
|
|
8
|
+
BUCKETS = [0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10, 30, 60, 90].freeze
|
|
9
|
+
|
|
10
|
+
class << self
|
|
11
|
+
# Instruments an HTTPX session with Yabeda metrics using the callbacks plugin.
|
|
12
|
+
#
|
|
13
|
+
# @param session [HTTPX::Session] The HTTPX session to instrument
|
|
14
|
+
# @return [HTTPX::Session] The instrumented session with callbacks attached
|
|
15
|
+
#
|
|
16
|
+
# @example
|
|
17
|
+
# http = HTTPX.plugin(:persistent)
|
|
18
|
+
# http = Yabeda::Httpx.instrument(http)
|
|
19
|
+
# response = http.get("https://example.com")
|
|
20
|
+
#
|
|
21
|
+
def instrument(session)
|
|
22
|
+
session
|
|
23
|
+
.plugin(:callbacks)
|
|
24
|
+
.on_request_started do |request|
|
|
25
|
+
request.instance_variable_set(:@yabeda_start_time, Process.clock_gettime(Process::CLOCK_MONOTONIC))
|
|
26
|
+
|
|
27
|
+
Yabeda.httpx.requests_total.increment(
|
|
28
|
+
host: request.uri.host,
|
|
29
|
+
method: request.verb.to_s.upcase
|
|
30
|
+
)
|
|
31
|
+
end
|
|
32
|
+
.on_response_completed do |request, response|
|
|
33
|
+
start_time = request.instance_variable_get(:@yabeda_start_time)
|
|
34
|
+
duration = start_time ? Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time : 0
|
|
35
|
+
|
|
36
|
+
tags = {
|
|
37
|
+
host: request.uri.host,
|
|
38
|
+
method: request.verb.to_s.upcase,
|
|
39
|
+
status: response.status.to_s
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
Yabeda.httpx.responses_total.increment(tags)
|
|
43
|
+
Yabeda.httpx.request_duration.measure(tags, duration)
|
|
44
|
+
end
|
|
45
|
+
.on_request_error do |request, error|
|
|
46
|
+
Yabeda.httpx.errors_total.increment(
|
|
47
|
+
host: request.uri.host,
|
|
48
|
+
method: request.verb.to_s.upcase,
|
|
49
|
+
error_class: error.class.name
|
|
50
|
+
)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
Yabeda.configure do
|
|
56
|
+
group :httpx do
|
|
57
|
+
counter :requests_total,
|
|
58
|
+
comment: "Total number of HTTPX requests",
|
|
59
|
+
tags: %i[host method]
|
|
60
|
+
|
|
61
|
+
counter :responses_total,
|
|
62
|
+
comment: "Total number of HTTPX responses",
|
|
63
|
+
tags: %i[host method status]
|
|
64
|
+
|
|
65
|
+
counter :errors_total,
|
|
66
|
+
comment: "Total number of HTTPX request errors",
|
|
67
|
+
tags: %i[host method error_class]
|
|
68
|
+
|
|
69
|
+
histogram :request_duration,
|
|
70
|
+
comment: "HTTPX request duration in seconds",
|
|
71
|
+
unit: :seconds,
|
|
72
|
+
tags: %i[host method status],
|
|
73
|
+
buckets: BUCKETS
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
lib = File.expand_path("../lib", __FILE__)
|
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
|
+
require "yabeda/httpx/version"
|
|
6
|
+
|
|
7
|
+
Gem::Specification.new do |spec|
|
|
8
|
+
spec.name = "yabeda-httpx"
|
|
9
|
+
spec.version = Yabeda::Httpx::VERSION
|
|
10
|
+
spec.authors = ["Jon David Schober"]
|
|
11
|
+
spec.email = ["jon@getdatanamic.com"]
|
|
12
|
+
|
|
13
|
+
spec.summary = "Yabeda plugin for monitoring HTTPX external HTTP requests"
|
|
14
|
+
spec.description = "Yabeda plugin that instruments HTTPX HTTP client with request metrics including duration histograms, request counts, and error tracking"
|
|
15
|
+
spec.homepage = "https://github.com/jondavidschober/yabeda-httpx"
|
|
16
|
+
spec.license = "MIT"
|
|
17
|
+
|
|
18
|
+
spec.required_ruby_version = ">= 2.7"
|
|
19
|
+
|
|
20
|
+
if spec.respond_to?(:metadata)
|
|
21
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
|
22
|
+
spec.metadata["source_code_uri"] = "https://github.com/jondavidschober/yabeda-httpx"
|
|
23
|
+
spec.metadata["changelog_uri"] = "https://github.com/jondavidschober/yabeda-httpx/blob/main/CHANGELOG.md"
|
|
24
|
+
else
|
|
25
|
+
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Specify which files should be added to the gem when it is released.
|
|
29
|
+
spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
|
|
30
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
31
|
+
end
|
|
32
|
+
spec.bindir = "exe"
|
|
33
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
34
|
+
spec.require_paths = ["lib"]
|
|
35
|
+
|
|
36
|
+
spec.add_dependency "yabeda", "~> 0.6"
|
|
37
|
+
spec.add_dependency "httpx", ">= 1.2.0"
|
|
38
|
+
|
|
39
|
+
spec.add_development_dependency "bundler", ">= 2.0"
|
|
40
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
|
41
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
|
42
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: yabeda-httpx
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Jon David Schober
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: exe
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2026-02-05 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: yabeda
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0.6'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0.6'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: httpx
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: 1.2.0
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: 1.2.0
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: bundler
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '2.0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '2.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rake
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '13.0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '13.0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rspec
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '3.0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '3.0'
|
|
83
|
+
description: Yabeda plugin that instruments HTTPX HTTP client with request metrics
|
|
84
|
+
including duration histograms, request counts, and error tracking
|
|
85
|
+
email:
|
|
86
|
+
- jon@getdatanamic.com
|
|
87
|
+
executables: []
|
|
88
|
+
extensions: []
|
|
89
|
+
extra_rdoc_files: []
|
|
90
|
+
files:
|
|
91
|
+
- ".github/workflows/gem-push.yml"
|
|
92
|
+
- ".gitignore"
|
|
93
|
+
- CHANGELOG.md
|
|
94
|
+
- Gemfile
|
|
95
|
+
- LICENSE.txt
|
|
96
|
+
- README.md
|
|
97
|
+
- Rakefile
|
|
98
|
+
- bin/console
|
|
99
|
+
- bin/setup
|
|
100
|
+
- lib/yabeda/httpx.rb
|
|
101
|
+
- lib/yabeda/httpx/version.rb
|
|
102
|
+
- yabeda-httpx.gemspec
|
|
103
|
+
homepage: https://github.com/jondavidschober/yabeda-httpx
|
|
104
|
+
licenses:
|
|
105
|
+
- MIT
|
|
106
|
+
metadata:
|
|
107
|
+
homepage_uri: https://github.com/jondavidschober/yabeda-httpx
|
|
108
|
+
source_code_uri: https://github.com/jondavidschober/yabeda-httpx
|
|
109
|
+
changelog_uri: https://github.com/jondavidschober/yabeda-httpx/blob/main/CHANGELOG.md
|
|
110
|
+
post_install_message:
|
|
111
|
+
rdoc_options: []
|
|
112
|
+
require_paths:
|
|
113
|
+
- lib
|
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
115
|
+
requirements:
|
|
116
|
+
- - ">="
|
|
117
|
+
- !ruby/object:Gem::Version
|
|
118
|
+
version: '2.7'
|
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
120
|
+
requirements:
|
|
121
|
+
- - ">="
|
|
122
|
+
- !ruby/object:Gem::Version
|
|
123
|
+
version: '0'
|
|
124
|
+
requirements: []
|
|
125
|
+
rubygems_version: 3.5.22
|
|
126
|
+
signing_key:
|
|
127
|
+
specification_version: 4
|
|
128
|
+
summary: Yabeda plugin for monitoring HTTPX external HTTP requests
|
|
129
|
+
test_files: []
|