Use Rack middleware for Padrino instrumentation #1142
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Update Sinatra test to assert EventHandler
I noticed this one scenario doesn't test if the EventHandler is present. Now it does check it.
Use Rack middleware for Padrino instrumentation
Refactor the Padrino instrumentation to use as much existing Rack middleware for instrumentation as possible.
Padrino is a framework built on Sinatra. We can reuse the Sinatra instrumentation middleware to instrument Padrino apps. In combination with the EventHandler we have 99% of the instrumentation done. To differentiate between Padrino and Sinatra events I've configured the Sinatra middleware to report the instrumentation event as a Padrino event.
The only thing we do need a monkeypatch for is the action name for Padrino. Everything else can be removed from the monkeypatch. The request metadata and exceptions are reported by the Sinatra middleware.
I've moved all the plugin initialization to the
Padrino.before_load
callback. It seems to initialize all the things we need before this time: app path and environment.