opentelemetry-instrumentation-sinatra 0.23.5 → 0.24.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 91d057f9632745f34d440f2974afc6a5972fbdddf84e78399444cf701f1ccab8
4
- data.tar.gz: 2890bdb60380ef2bc77f8464fd6c7c483491527d0d15398aa53db7184ed62d9a
3
+ metadata.gz: 5c2ff5d9ea266d15b8fa21453c2178c4c3161893c3c2778c603b1dc7ba2788b5
4
+ data.tar.gz: fd2953b0a5e1bad80eb0a9d40f2df066d4b14e1da77099ff88993299aa3f9dd8
5
5
  SHA512:
6
- metadata.gz: 8faf33107b76e7efc4e8b6cbfab31b2425d08847e48b8f5c773977ceb9357f7ab9b07eab53df4c9db626c07fc7335f297673bd506104ac4b7d78aa5326ca050b
7
- data.tar.gz: 60ffc9095d477828fe5f7ec76817d969a0905de37222380ee253ca12dedac7cd7a7f516bcb7af077384aafcbefa310f24dcdbe32360afaabbb0d0f663aae4c80
6
+ metadata.gz: a08cea93e13127d14a3b222e908b1724e3a6271a5de3c4330b8b6bd77809aff506ba37d63e4a4e9850ebc88c12e56b2778f9f1e4c3d13e389b71cb60942166b1
7
+ data.tar.gz: b9c209655a2a32a6e53b2230f05228312dcdc481331cbf91389d18b45e2e98eb40265c6db51a24e05112eb4b9a171614b1898ba19833c953e75b8e74f94cf056
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
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
+
3
7
  ### v0.23.5 / 2024-06-18
4
8
 
5
9
  * FIXED: Relax otel common gem constraints
@@ -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.5'
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.5
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-06-18 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
@@ -228,10 +228,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby-contrib
228
228
  licenses:
229
229
  - Apache-2.0
230
230
  metadata:
231
- changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-sinatra/0.23.5/file/CHANGELOG.md
231
+ changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-sinatra/0.24.0/file/CHANGELOG.md
232
232
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation/sinatra
233
233
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
234
- documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-sinatra/0.23.5
234
+ documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-sinatra/0.24.0
235
235
  post_install_message:
236
236
  rdoc_options: []
237
237
  require_paths: