-
Notifications
You must be signed in to change notification settings - Fork 322
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add logging and instrumentation via features #499
Conversation
3266154
to
2f95c5d
Compare
2f95c5d
to
0e09e4f
Compare
d030725
to
d139773
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice!
One of the jruby builds randomly failed, but it seems I don't have permission to restart it, and I don't want to commit an empty commit to poke it. |
commit --amend and a force push will poke it, otherwise I can in a bit
--
Tony Arcieri
|
IMO first def use(feature_id, **options); end |
@ixti Perhaps, but this PR didn't really touch that code. Want me to make that change as well? |
@paul yes please |
in fact i'm not sure :)) i just find |
Let me think - will speak out tomorrow :D |
Well, I think it would instead be def features=(*features, **options)
@features = if features.size > 1 && !options.empty?
# what here? assign options to every feature?
elsif !options.empty?
feature = features.first
[feature.new(**options)]
else
features.map(&:new)
end
end |
What about: use(:instrumentation) use(instrumentation: { instrumenter: AS::Notifications, namespace: "my_http" }) use(:auto_inflate, :auto_deflate, instrumentation: { instrumenter: AS::Notifications, namespace: "my_http" }) use(:auto_inflate, instrumentation: { instrumenter: AS::Notifications, namespace: "my_http" }, :auto_deflate) Essentially allow both |
@tarcieri unless I'm mistaken, that's how it works now? |
@paul haha okay, so why not just keep it that way? |
Oh, i see, I screwed up my example for it in the PR. No wonder I was confused. |
@ixti I had messed up the example I used in the description of this PR, so maybe that was your concern? This PR doesn't change the signature of Once this gets merged, I'll write a wiki page to document how to use the features feature. |
Yeah. I guess I was confused. Let's keep it as is. |
@paul Yeah we have some backward incompatible changes right now in the master. I will check if we can extract somethign to release as 3.4.0 without introducing backward incompatible changes meanwhile. Just give me couple of weeks (on my vacation right now) and I will prepare and push the release. |
There's any date to when this feature is gonna be available in the stable version? |
@mateusluizfb if @ixti doesn't have time, I can do a release |
Yeah. Sorry took me so long to get back in a shell. Will do release this weekend. |
I have released current master as |
Thanks @ixti!
The joys of semantic versioning! |
Could you update the readme? Luckily found this PR, cause readme/wiki has no information about this feature |
@khataev I had updating the wiki on my TODO when I finished this PR, I guess it never happened. Sorry about that. I've added a page to the wiki, hopefully it helps: https://github.com/httprb/http/wiki/Logging-and-Instrumentation |
Update ruby-http to 4.4.1. ## 4.4.1 (2020-03-29) * Backport [#590](httprb/http#590) Fix parser failing on some edge cases. ([@ixti]) ## 4.4.0 (2020-03-25) * Backport [#587](httprb/http#587) Fix redirections when server responds with multiple Location headers. ([@ixti]) * Backport [#599](httprb/http#599) Allow passing HTTP::FormData::{Multipart,UrlEncoded} object directly. ([@ixti]) ## 4.3.0 (2020-01-09) * Backport [#581](httprb/http#581) Add Ruby-2.7 compatibility. ([@ixti], [@janko]) ## 4.2.0 (2019-10-22) * Backport [#489](httprb/http#489) Fix HTTP parser. ([@ixti], [@fxposter]) ## 4.1.1 (2019-03-12) * Add `HTTP::Headers::ACCEPT_ENCODING` constant. ([@ixti]) ## 4.1.0 (2019-03-11) * [#533](httprb/http#533) Add URI normalizer feature that allows to swap default URI normalizer. ([@mamoonraja]) ## 4.0.5 (2019-02-15) * Backport [#532](httprb/http#532) from master. Fix pipes support in request bodies. ([@ixti]) ## 4.0.4 (2019-02-12) * Backport [#506](httprb/http#506) from master. Skip auto-deflate when there is no body. ([@Bonias]) ## 4.0.3 (2019-01-18) * Fix missing URL in response wrapped by auto inflate. ([@ixti]) * Provide `HTTP::Request#inspect` method for debugging purposes. ([@ixti]) ## 4.0.2 (2019-01-15) * [#506](httprb/http#506) Fix instrumentation feature. ([@paul]) ## 4.0.1 (2019-01-14) * [#515](httprb/http#515) Fix `#build_request` and `#request` to respect default options. ([@RickCSong]) ## 4.0.0 (2018-10-15) * [#482](httprb/http#482) [#499](httprb/http#499) Introduce new features injection API with 2 new feaures: instrumentation (compatible with ActiveSupport::Notification) and logging. ([@paul]) * [#473](httprb/http#473) Handle early responses. ([@janko-m]) * [#468](httprb/http#468) Rewind `HTTP::Request::Body#source` once `#each` is complete. ([@ixti]) * [#467](httprb/http#467) Drop Ruby 2.2 support. ([@ixti]) * [#436](httprb/http#436) Raise ConnectionError when writing to socket fails. ([@janko-m]) * [#438](httprb/http#438) Expose `HTTP::Request::Body#source`. ([@janko-m]) * [#446](httprb/http#446) Simplify setting a timeout. ([@mikegee]) * [#451](httprb/http#451) Reduce memory usage when reading response body. ([@janko-m]) * [#458](httprb/http#458) Extract HTTP::Client#build_request method. ([@tycoon]) * [#462](httprb/http#462) Fix HTTP::Request#headline to allow two leading slashes in path. ([@scarfacedeb]) * [#454](httprb/http#454) [#464](httprb/http#464) [#384](httprb/http#384) Fix #readpartial not respecting max length argument. ([@janko-m], [@marshall-lee])
Adds logging and AS::Notifications-compatible instrumentation as separate features.
Building upon the features API introduced in #482, this adds a means to register new custom features:
Also adds two new features, Logging and Instrumentation.