opentelemetry-instrumentation-sinatra 0.23.4 → 0.24.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: c1da878f863591049b901d50777f461e91c176a32b50a56873459257ed2d669b
4
- data.tar.gz: f5e9cc6d9adaee95a805404baec8c949b2e27054a7f40f28443d317005624621
3
+ metadata.gz: 5c2ff5d9ea266d15b8fa21453c2178c4c3161893c3c2778c603b1dc7ba2788b5
4
+ data.tar.gz: fd2953b0a5e1bad80eb0a9d40f2df066d4b14e1da77099ff88993299aa3f9dd8
5
5
  SHA512:
6
- metadata.gz: 1410216380af0fdd256f120217132cdd73c93b81f2d669304ea07689350ed6da5f7cdd98ef55b04eb75b5dc0f9253934149e88488550882d1700cdc2f379d5c3
7
- data.tar.gz: fd765d3d139d8e6275a15032f28e9afdabf37c0ddf95315cc5d412d92d53ac27bed22bd8d5bd9aae4278b750f117e04298e75c1ccd4ffa34879138ab069e15e0
6
+ metadata.gz: a08cea93e13127d14a3b222e908b1724e3a6271a5de3c4330b8b6bd77809aff506ba37d63e4a4e9850ebc88c12e56b2778f9f1e4c3d13e389b71cb60942166b1
7
+ data.tar.gz: b9c209655a2a32a6e53b2230f05228312dcdc481331cbf91389d18b45e2e98eb40265c6db51a24e05112eb4b9a171614b1898ba19833c953e75b8e74f94cf056
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Release History: opentelemetry-instrumentation-sinatra
2
2
 
3
+ ### v0.24.0 / 2024-07-02
4
+
5
+ * ADDED: Make Rack install optional for sinatra
6
+
7
+ ### v0.23.5 / 2024-06-18
8
+
9
+ * FIXED: Relax otel common gem constraints
10
+
3
11
  ### v0.23.4 / 2024-05-09
4
12
 
5
13
  * FIXED: Untrace entire request
@@ -13,23 +13,25 @@ module OpenTelemetry
13
13
  # Sinatra extension that installs TracerMiddleware and provides
14
14
  # tracing for template rendering
15
15
  module TracerExtension
16
- # Sinatra hook after extension is registered
17
- def self.registered(app)
18
- # Create tracing `render` method
19
- ::Sinatra::Base.module_eval do
20
- def render(_engine, data, *)
21
- template_name = data.is_a?(Symbol) ? data : :literal
16
+ # Contants patches for `render` method
17
+ module RenderPatches
18
+ def render(_engine, data, *)
19
+ template_name = data.is_a?(Symbol) ? data : :literal
22
20
 
23
- Sinatra::Instrumentation.instance.tracer.in_span(
24
- 'sinatra.render_template',
25
- attributes: { 'sinatra.template_name' => template_name.to_s }
26
- ) do
27
- super
28
- end
21
+ Sinatra::Instrumentation.instance.tracer.in_span(
22
+ 'sinatra.render_template',
23
+ attributes: { 'sinatra.template_name' => template_name.to_s }
24
+ ) do
25
+ super
29
26
  end
30
27
  end
31
- app.use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args)
32
- app.use(Middlewares::TracerMiddleware)
28
+ end
29
+
30
+ # Sinatra hook after extension is registered
31
+ def self.registered(app)
32
+ # Create tracing `render` method
33
+ ::Sinatra::Base.prepend(RenderPatches)
34
+ Sinatra::Instrumentation.instance.install_middleware(app)
33
35
  end
34
36
  end
35
37
  end
@@ -9,18 +9,51 @@ require_relative 'extensions/tracer_extension'
9
9
  module OpenTelemetry
10
10
  module Instrumentation
11
11
  module Sinatra
12
- # The Instrumentation class contains logic to detect and install the Sinatra
13
- # instrumentation
12
+ # The {OpenTelemetry::Instrumentation::Sinatra::Instrumentation} class contains logic to detect and install the Sinatra instrumentation
13
+ #
14
+ # Installation and configuration of this instrumentation is done within the
15
+ # {https://www.rubydoc.info/gems/opentelemetry-sdk/OpenTelemetry/SDK#configure-instance_method OpenTelemetry::SDK#configure}
16
+ # block, calling {https://www.rubydoc.info/gems/opentelemetry-sdk/OpenTelemetry%2FSDK%2FConfigurator:use use()}
17
+ # or {https://www.rubydoc.info/gems/opentelemetry-sdk/OpenTelemetry%2FSDK%2FConfigurator:use_all use_all()}.
18
+ #
19
+ # ## Configuration keys and options
20
+ #
21
+ # ### `:install_rack`
22
+ #
23
+ # Default is `true`. Specifies whether or not to install the Rack instrumentation as part of installing the Sinatra instrumentation.
24
+ # This is useful in cases where you have multiple Rack applications but want to manually specify where to insert the tracing middleware.
25
+ #
26
+ # @example Manually install Rack instrumentation.
27
+ # OpenTelemetry::SDK.configure do |c|
28
+ # c.use_all({
29
+ # 'OpenTelemetry::Instrumentation::Rack' => { },
30
+ # 'OpenTelemetry::Instrumentation::Sinatra' => {
31
+ # install_rack: false
32
+ # },
33
+ # })
34
+ # end
35
+ #
14
36
  class Instrumentation < OpenTelemetry::Instrumentation::Base
15
- install do |_|
16
- OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.install({})
37
+ install do |config|
38
+ OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.install({}) if config[:install_rack]
39
+
40
+ unless OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.installed?
41
+ OpenTelemetry.logger.warn('Rack instrumentation is required for Sinatra but not installed. Please see the docs for more details: https://opentelemetry.io/docs/languages/ruby/libraries/')
42
+ end
17
43
 
18
44
  ::Sinatra::Base.register Extensions::TracerExtension
19
45
  end
20
46
 
47
+ option :install_rack, default: true, validate: :boolean
48
+
21
49
  present do
22
50
  defined?(::Sinatra)
23
51
  end
52
+
53
+ def install_middleware(app)
54
+ app.use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args) if config[:install_rack]
55
+ app.use(Middlewares::TracerMiddleware)
56
+ end
24
57
  end
25
58
  end
26
59
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Sinatra
10
- VERSION = '0.23.4'
10
+ VERSION = '0.24.0'
11
11
  end
12
12
  end
13
13
  end
@@ -9,7 +9,7 @@ require 'opentelemetry-instrumentation-base'
9
9
 
10
10
  module OpenTelemetry
11
11
  module Instrumentation
12
- # Contains the OpenTelemetry instrumentation for the Sinatra gem
12
+ # (see OpenTelemetry::Instrumentation::Sinatra::Instrumentation)
13
13
  module Sinatra
14
14
  end
15
15
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-instrumentation-sinatra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.4
4
+ version: 0.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-09 00:00:00.000000000 Z
11
+ date: 2024-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
- - !ruby/object:Gem::Dependency
28
- name: opentelemetry-common
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 0.21.0
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 0.21.0
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: opentelemetry-instrumentation-base
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +142,14 @@ dependencies:
156
142
  requirements:
157
143
  - - "~>"
158
144
  - !ruby/object:Gem::Version
159
- version: '1.62'
145
+ version: 1.64.0
160
146
  type: :development
161
147
  prerelease: false
162
148
  version_requirements: !ruby/object:Gem::Requirement
163
149
  requirements:
164
150
  - - "~>"
165
151
  - !ruby/object:Gem::Version
166
- version: '1.62'
152
+ version: 1.64.0
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: rubocop-performance
169
155
  requirement: !ruby/object:Gem::Requirement
@@ -242,10 +228,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby-contrib
242
228
  licenses:
243
229
  - Apache-2.0
244
230
  metadata:
245
- changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-sinatra/0.23.4/file/CHANGELOG.md
231
+ changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-sinatra/0.24.0/file/CHANGELOG.md
246
232
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation/sinatra
247
233
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
248
- documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-sinatra/0.23.4
234
+ documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-sinatra/0.24.0
249
235
  post_install_message:
250
236
  rdoc_options: []
251
237
  require_paths: