ddtrace 0.27.0 → 0.28.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
  SHA1:
3
- metadata.gz: e0968ba35be08053c082756099e810143bf93531
4
- data.tar.gz: d648169405d516eb09c208776254bbd2b0bb858b
3
+ metadata.gz: 474534ec09c4b140ea5dd736dba0a9844afdeb6d
4
+ data.tar.gz: e009826090a9bb34a78d37f97152b5cdf7592cce
5
5
  SHA512:
6
- metadata.gz: 3c7ae3e5c9c25819adf0432f1e88057b64cdf16a143139bccae1b1d9649738d39abffdf0ba97a05f11d9dd70ab137cf2ef28da2d15ec2121ab4e3fe387d72b67
7
- data.tar.gz: 72c24e92cbba1f15f9188da97319f333a4a1eca4c702bbb05c4d18aef6a136e06f23790f5b3ad789b6abca5d441d9e3b7e2455d89fc82eba359de1e691fbf9ad
6
+ metadata.gz: a0735d265773cb55f28c22b376c7bf521bc3e4aac279c7ebba660e149a32fe765f7111112d2a305aca5ea4daa42e77051575c3781bf7d5170424359d20ad2e07
7
+ data.tar.gz: d0781f4c1099085e1e73eb6f65605e12ee1abadb9df0b535868eea2e6a5b58a8831d6f67a25b1646f13bc32b8b14bacd69e70d0aea9398026c8bc96e741ccc4f
data/Appraisals CHANGED
@@ -596,11 +596,42 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
596
596
  gem 'activejob'
597
597
  end
598
598
 
599
+ appraise 'rails6-mysql2' do
600
+ gem 'rails', '~> 6.0.0'
601
+ gem 'mysql2', '< 0.6', platform: :ruby
602
+ end
603
+
604
+ appraise 'rails6-postgres' do
605
+ gem 'rails', '~> 6.0.0'
606
+ gem 'pg', '< 1.0', platform: :ruby
607
+ end
608
+
609
+ appraise 'rails6-postgres-redis' do
610
+ gem 'rails', '~> 6.0.0'
611
+ gem 'pg', '< 1.0', platform: :ruby
612
+ gem 'redis-rails'
613
+ gem 'redis'
614
+ end
615
+
616
+ appraise 'rails6-postgres-redis-activesupport' do
617
+ gem 'rails', '~> 6.0.0'
618
+ gem 'pg', '< 1.0', platform: :ruby
619
+ gem 'redis-rails'
620
+ gem 'redis'
621
+ end
622
+
623
+ appraise 'rails6-postgres-sidekiq' do
624
+ gem 'rails', '~> 6.0.0'
625
+ gem 'pg', '< 1.0', platform: :ruby
626
+ gem 'sidekiq'
627
+ gem 'activejob'
628
+ end
629
+
599
630
  appraise 'contrib' do
600
631
  gem 'actionpack'
601
632
  gem 'actionview'
602
633
  gem 'active_model_serializers', '>= 0.10.0'
603
- gem 'activerecord', '< 5.1.5'
634
+ gem 'activerecord'
604
635
  gem 'aws-sdk'
605
636
  gem 'concurrent-ruby'
606
637
  gem 'dalli'
@@ -626,7 +657,7 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
626
657
  gem 'shoryuken'
627
658
  gem 'sidekiq'
628
659
  gem 'sinatra'
629
- gem 'sqlite3', '~> 1.3.6'
660
+ gem 'sqlite3', '~> 1.4.1'
630
661
  gem 'sucker_punch'
631
662
  gem 'typhoeus'
632
663
  end
@@ -664,11 +695,42 @@ elsif Gem::Version.new('2.6.0') <= Gem::Version.new(RUBY_VERSION)
664
695
  gem 'activejob'
665
696
  end
666
697
 
698
+ appraise 'rails6-mysql2' do
699
+ gem 'rails', '~> 6.0.0'
700
+ gem 'mysql2', '< 0.6', platform: :ruby
701
+ end
702
+
703
+ appraise 'rails6-postgres' do
704
+ gem 'rails', '~> 6.0.0'
705
+ gem 'pg', '< 1.0', platform: :ruby
706
+ end
707
+
708
+ appraise 'rails6-postgres-redis' do
709
+ gem 'rails', '~> 6.0.0'
710
+ gem 'pg', '< 1.0', platform: :ruby
711
+ gem 'redis-rails'
712
+ gem 'redis'
713
+ end
714
+
715
+ appraise 'rails6-postgres-redis-activesupport' do
716
+ gem 'rails', '~> 6.0.0'
717
+ gem 'pg', '< 1.0', platform: :ruby
718
+ gem 'redis-rails'
719
+ gem 'redis'
720
+ end
721
+
722
+ appraise 'rails6-postgres-sidekiq' do
723
+ gem 'rails', '~> 6.0.0'
724
+ gem 'pg', '< 1.0', platform: :ruby
725
+ gem 'sidekiq'
726
+ gem 'activejob'
727
+ end
728
+
667
729
  appraise 'contrib' do
668
730
  gem 'actionpack'
669
731
  gem 'actionview'
670
732
  gem 'active_model_serializers', '>= 0.10.0'
671
- gem 'activerecord', '< 5.1.5'
733
+ gem 'activerecord'
672
734
  gem 'aws-sdk'
673
735
  gem 'concurrent-ruby'
674
736
  gem 'dalli'
@@ -694,7 +756,7 @@ elsif Gem::Version.new('2.6.0') <= Gem::Version.new(RUBY_VERSION)
694
756
  gem 'shoryuken'
695
757
  gem 'sidekiq'
696
758
  gem 'sinatra'
697
- gem 'sqlite3', '~> 1.3.6'
759
+ gem 'sqlite3', '~> 1.4.1'
698
760
  gem 'sucker_punch'
699
761
  gem 'typhoeus'
700
762
  end
data/CHANGELOG.md CHANGED
@@ -1,8 +1,22 @@
1
1
  # Changelog
2
2
 
3
- ## [Unreleased (stable)]
3
+ ## [Unreleased]
4
4
 
5
- ## [Unreleased (beta)]
5
+ ## [0.28.0] - 2019-10-01
6
+
7
+ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.28.0
8
+
9
+ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.27.0...v0.28.0
10
+
11
+ ### Added
12
+
13
+ - Support for Rails 6.0 (#814)
14
+ - Multiplexing on hostname/port for Dalli (#823)
15
+ - Support for Redis array arguments (#796, #817) (@brafales)
16
+
17
+ ### Refactored
18
+
19
+ - Encapsulate span resource name in Faraday integration (#811) (@giancarlocosta)
6
20
 
7
21
  ## [0.27.0] - 2019-09-04
8
22
 
@@ -929,8 +943,8 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
929
943
 
930
944
  Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
931
945
 
932
- [Unreleased (stable)]: https://github.com/DataDog/dd-trace-rb/compare/v0.27.0...master
933
- [Unreleased (beta)]: https://github.com/DataDog/dd-trace-rb/compare/v0.27.0...0.28-dev
946
+ [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v0.28.0...master
947
+ [0.28.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.27.0...v0.28.0
934
948
  [0.27.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.26.0...v0.27.0
935
949
  [0.26.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.25.1...v0.26.0
936
950
  [0.25.1]: https://github.com/DataDog/dd-trace-rb/compare/v0.25.0...v0.25.1
data/Rakefile CHANGED
@@ -552,9 +552,18 @@ task :ci do
552
552
  sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railssidekiq'
553
553
  sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railsactivejob'
554
554
  sh 'bundle exec appraisal rails5-postgres rake test:railsdisableenv'
555
+ sh 'bundle exec appraisal rails6-mysql2 rake test:rails'
556
+ sh 'bundle exec appraisal rails6-postgres rake test:rails'
557
+ sh 'bundle exec appraisal rails6-postgres-redis rake test:railsredis'
558
+ sh 'bundle exec appraisal rails6-postgres-redis-activesupport rake test:railsredis'
559
+ sh 'bundle exec appraisal rails6-postgres-sidekiq rake test:railssidekiq'
560
+ sh 'bundle exec appraisal rails6-postgres-sidekiq rake test:railsactivejob'
561
+ sh 'bundle exec appraisal rails6-postgres rake test:railsdisableenv'
555
562
  # Rails specs
556
563
  sh 'bundle exec appraisal rails5-mysql2 rake spec:rails'
557
564
  sh 'bundle exec appraisal rails5-postgres rake spec:rails'
565
+ sh 'bundle exec appraisal rails6-mysql2 rake spec:rails'
566
+ sh 'bundle exec appraisal rails6-postgres rake spec:rails'
558
567
  end
559
568
  elsif Gem::Version.new('2.6.0') <= Gem::Version.new(RUBY_VERSION)
560
569
  # Main library
@@ -607,9 +616,18 @@ task :ci do
607
616
  sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railssidekiq'
608
617
  sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railsactivejob'
609
618
  sh 'bundle exec appraisal rails5-postgres rake test:railsdisableenv'
619
+ sh 'bundle exec appraisal rails6-mysql2 rake test:rails'
620
+ sh 'bundle exec appraisal rails6-postgres rake test:rails'
621
+ sh 'bundle exec appraisal rails6-postgres-redis rake test:railsredis'
622
+ sh 'bundle exec appraisal rails6-postgres-redis-activesupport rake test:railsredis'
623
+ sh 'bundle exec appraisal rails6-postgres-sidekiq rake test:railssidekiq'
624
+ sh 'bundle exec appraisal rails6-postgres-sidekiq rake test:railsactivejob'
625
+ sh 'bundle exec appraisal rails6-postgres rake test:railsdisableenv'
610
626
  # Rails specs
611
627
  sh 'bundle exec appraisal rails5-mysql2 rake spec:rails'
612
628
  sh 'bundle exec appraisal rails5-postgres rake spec:rails'
629
+ sh 'bundle exec appraisal rails6-mysql2 rake spec:rails'
630
+ sh 'bundle exec appraisal rails6-postgres rake spec:rails'
613
631
  end
614
632
  end
615
633
  end
@@ -78,18 +78,18 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
78
78
 
79
79
  **Supported Ruby interpreters**:
80
80
 
81
- | Type | Documentation | Version | Support type | Gem version support | EOL Date |
82
- | ----- | -------------------------- | ----- | ------------ | ------------------------- | ---------------- |
83
- | MRI | https://www.ruby-lang.org/ | 1.9.1 | Maintenance | < 0.27.0 | August 6th, 2020 |
84
- | | | 1.9.3 | Maintenance | < 0.27.0 | August 6th, 2020 |
85
- | | | 2.0 | Full | Latest | TBD |
86
- | | | 2.1 | Full | Latest | TBD |
87
- | | | 2.2 | Full | Latest | TBD |
88
- | | | 2.3 | Full | Latest | TBD |
89
- | | | 2.4 | Full | Latest | TBD |
90
- | | | 2.5 | Full | Latest | TBD |
91
- | | | 2.6 | Full | Latest | TBD |
92
- | JRuby | http://jruby.org/ | 9.1.5 | Experimental | Latest | TBD |
81
+ | Type | Documentation | Version | Support type | Gem version support |
82
+ | ----- | -------------------------- | ----- | ------------------------------------ | ------------------- |
83
+ | MRI | https://www.ruby-lang.org/ | 2.6 | Full | Latest |
84
+ | | | 2.5 | Full | Latest |
85
+ | | | 2.4 | Full | Latest |
86
+ | | | 2.3 | Full | Latest |
87
+ | | | 2.2 | Full | Latest |
88
+ | | | 2.1 | Full | Latest |
89
+ | | | 2.0 | Full | Latest |
90
+ | | | 1.9.3 | Maintenance (until August 6th, 2020) | < 0.27.0 |
91
+ | | | 1.9.1 | Maintenance (until August 6th, 2020) | < 0.27.0 |
92
+ | JRuby | http://jruby.org/ | 9.1.5 | Alpha | Latest |
93
93
 
94
94
  **Supported web servers**:
95
95
 
@@ -101,15 +101,13 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
101
101
 
102
102
  **Supported tracing frameworks**:
103
103
 
104
- | Type | Documentation | Version | Support type |
105
- | ----------- | ----------------------------------------------- | --------------------- | ------------ |
106
- | OpenTracing | https://github.com/opentracing/opentracing-ruby | 0.4.1+ (w/ Ruby 2.1+) | Experimental |
104
+ | Type | Documentation | Version | Gem version support |
105
+ | ----------- | ----------------------------------------------- | --------------------- | ------------------- |
106
+ | OpenTracing | https://github.com/opentracing/opentracing-ruby | 0.4.1+ (w/ Ruby 2.1+) | >= 0.16.0 |
107
107
 
108
108
  *Full* support indicates all tracer features are available.
109
109
 
110
- *Experimental* indicates most features should be available, but unverified.
111
-
112
- *Deprecated* indicates support will be removed in a future release.
110
+ *Deprecated* indicates support will transition to *Maintenance* in a future release.
113
111
 
114
112
  *Maintenance* indicates only critical bugfixes are backported until EOL.
115
113
 
@@ -326,11 +324,11 @@ For a list of available integrations, and their configuration options, please re
326
324
 
327
325
  | Name | Key | Versions Supported | How to configure | Gem source |
328
326
  | ------------------------ | -------------------------- | ------------------------ | ----------------------------------- | ------------------------------------------------------------------------------ |
329
- | Action View | `action_view` | `>= 3.2, < 6.0` | *[Link](#action-view)* | *[Link](https://github.com/rails/rails/tree/master/actionview)* |
327
+ | Action View | `action_view` | `>= 3.2` | *[Link](#action-view)* | *[Link](https://github.com/rails/rails/tree/master/actionview)* |
330
328
  | Active Model Serializers | `active_model_serializers` | `>= 0.9` | *[Link](#active-model-serializers)* | *[Link](https://github.com/rails-api/active_model_serializers)* |
331
- | Action Pack | `action_pack` | `>= 3.2, < 6.0` | *[Link](#action-pack)* | *[Link](https://github.com/rails/rails/tree/master/actionpack)* |
332
- | Active Record | `active_record` | `>= 3.2, < 6.0` | *[Link](#active-record)* | *[Link](https://github.com/rails/rails/tree/master/activerecord)* |
333
- | Active Support | `active_support` | `>= 3.2, < 6.0` | *[Link](#active-support)* | *[Link](https://github.com/rails/rails/tree/master/activesupport)* |
329
+ | Action Pack | `action_pack` | `>= 3.2` | *[Link](#action-pack)* | *[Link](https://github.com/rails/rails/tree/master/actionpack)* |
330
+ | Active Record | `active_record` | `>= 3.2` | *[Link](#active-record)* | *[Link](https://github.com/rails/rails/tree/master/activerecord)* |
331
+ | Active Support | `active_support` | `>= 3.2` | *[Link](#active-support)* | *[Link](https://github.com/rails/rails/tree/master/activesupport)* |
334
332
  | AWS | `aws` | `>= 2.0` | *[Link](#aws)* | *[Link](https://github.com/aws/aws-sdk-ruby)* |
335
333
  | Concurrent Ruby | `concurrent_ruby` | `>= 0.9` | *[Link](#concurrent-ruby)* | *[Link](https://github.com/ruby-concurrency/concurrent-ruby)* |
336
334
  | Dalli | `dalli` | `>= 2.7` | *[Link](#dalli)* | *[Link](https://github.com/petergoldstein/dalli)* |
@@ -347,7 +345,7 @@ For a list of available integrations, and their configuration options, please re
347
345
  | Net/HTTP | `http` | *(Any supported Ruby)* | *[Link](#nethttp)* | *[Link](https://ruby-doc.org/stdlib-2.4.0/libdoc/net/http/rdoc/Net/HTTP.html)* |
348
346
  | Racecar | `racecar` | `>= 0.3.5` | *[Link](#racecar)* | *[Link](https://github.com/zendesk/racecar)* |
349
347
  | Rack | `rack` | `>= 1.4.7` | *[Link](#rack)* | *[Link](https://github.com/rack/rack)* |
350
- | Rails | `rails` | `>= 3.2, < 6.0` | *[Link](#rails)* | *[Link](https://github.com/rails/rails)* |
348
+ | Rails | `rails` | `>= 3.2` | *[Link](#rails)* | *[Link](https://github.com/rails/rails)* |
351
349
  | Rake | `rake` | `>= 12.0` | *[Link](#rake)* | *[Link](https://github.com/ruby/rake)* |
352
350
  | Redis | `redis` | `>= 3.2, < 4.0` | *[Link](#redis)* | *[Link](https://github.com/redis/redis-rb)* |
353
351
  | Resque | `resque` | `>= 1.0, < 2.0` | *[Link](#resque)* | *[Link](https://github.com/resque/resque)* |
@@ -1105,8 +1103,9 @@ Where `options` is an optional `Hash` that accepts the following parameters:
1105
1103
  | 2.0 | 3.0 - 3.2 |
1106
1104
  | 2.1 | 3.0 - 4.2 |
1107
1105
  | 2.2 - 2.3 | 3.0 - 5.2 |
1108
- | 2.4 - 2.5 | 4.2.8 - 5.2 |
1109
- | 2.6 | 5.0 - 5.2 |
1106
+ | 2.4 | 4.2.8 - 5.2 |
1107
+ | 2.5 | 4.2.8 - 6.0 |
1108
+ | 2.6 | 5.0 - 6.0 |
1110
1109
 
1111
1110
  ### Rake
1112
1111
 
@@ -1778,8 +1777,9 @@ config.lograge.custom_options = lambda do |event|
1778
1777
  {
1779
1778
  # Adds IDs as tags to log output
1780
1779
  :dd => {
1781
- :trace_id => correlation.trace_id,
1782
- :span_id => correlation.span_id
1780
+ # To preserve precision during JSON serialization, use strings for large numbers
1781
+ :trace_id => correlation.trace_id.to_s,
1782
+ :span_id => correlation.span_id.to_s
1783
1783
  },
1784
1784
  :ddsource => ["ruby"],
1785
1785
  :params => event.payload[:params].reject { |k| %w(controller action).include? k }
@@ -0,0 +1,78 @@
1
+ require 'ddtrace/contrib/action_view/ext'
2
+
3
+ module Datadog
4
+ module Contrib
5
+ module ActionView
6
+ module Instrumentation
7
+ # Instrumentation for partial rendering
8
+ module PartialRenderer
9
+ def render(*args, &block)
10
+ datadog_tracer.trace(
11
+ Ext::SPAN_RENDER_PARTIAL,
12
+ span_type: Datadog::Ext::HTTP::TEMPLATE
13
+ ) do |span|
14
+ with_datadog_span(span) { super(*args) }
15
+ end
16
+ end
17
+
18
+ def render_partial(*args)
19
+ begin
20
+ template = datadog_template(*args)
21
+
22
+ datadog_render_partial(template)
23
+ rescue StandardError => e
24
+ Datadog::Tracer.log.debug(e.message)
25
+ end
26
+
27
+ # execute the original function anyway
28
+ super(*args)
29
+ end
30
+
31
+ def datadog_render_partial(template)
32
+ template_name = Utils.normalize_template_name(template.try('identifier'))
33
+
34
+ if template_name
35
+ active_datadog_span.set_tag(
36
+ Ext::TAG_TEMPLATE_NAME,
37
+ template_name
38
+ )
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ attr_accessor :active_datadog_span
45
+
46
+ def datadog_tracer
47
+ Datadog.configuration[:action_view][:tracer]
48
+ end
49
+
50
+ def with_datadog_span(span)
51
+ self.active_datadog_span = span
52
+ yield
53
+ ensure
54
+ self.active_datadog_span = nil
55
+ end
56
+
57
+ # Rails < 6 partial rendering
58
+ module RailsLessThan6
59
+ include PartialRenderer
60
+
61
+ def datadog_template(*args)
62
+ @template
63
+ end
64
+ end
65
+
66
+ # Rails >= 6 partial rendering
67
+ module Rails6Plus
68
+ include PartialRenderer
69
+
70
+ def datadog_template(*args)
71
+ args[1]
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -3,7 +3,6 @@ require 'ddtrace/contrib/action_view/ext'
3
3
  module Datadog
4
4
  module Contrib
5
5
  module ActionView
6
- # Defines instrumentation for ActionView
7
6
  module Instrumentation
8
7
  # Instrumentation for template rendering
9
8
  module TemplateRenderer
@@ -83,7 +82,7 @@ module Datadog
83
82
  end
84
83
  end
85
84
 
86
- # Rails >= 3.1 template rendering
85
+ # Shared code for Rails >= 3.1 template rendering
87
86
  module Rails31Plus
88
87
  def render(*args, &block)
89
88
  datadog_tracer.trace(
@@ -96,28 +95,9 @@ module Datadog
96
95
 
97
96
  def render_template(*args)
98
97
  begin
99
- # arguments based on render_template signature (stable since Rails 3.2)
100
- template = args[0]
101
- layout_name = args[1]
102
-
103
- # update the tracing context with computed values before the rendering
104
- template_name = template.try('identifier')
105
- template_name = Utils.normalize_template_name(template_name)
106
- layout = layout_name.try(:[], 'virtual_path')
107
-
108
- if template_name
109
- active_datadog_span.set_tag(
110
- Ext::TAG_TEMPLATE_NAME,
111
- template_name
112
- )
113
- end
98
+ template, layout_name = datadog_parse_args(*args)
114
99
 
115
- if layout
116
- active_datadog_span.set_tag(
117
- Ext::TAG_LAYOUT,
118
- layout
119
- )
120
- end
100
+ datadog_render_template(template, layout_name)
121
101
  rescue StandardError => e
122
102
  Datadog::Tracer.log.debug(e.message)
123
103
  end
@@ -126,6 +106,27 @@ module Datadog
126
106
  super(*args)
127
107
  end
128
108
 
109
+ def datadog_render_template(template, layout_name)
110
+ # update the tracing context with computed values before the rendering
111
+ template_name = template.try('identifier')
112
+ template_name = Utils.normalize_template_name(template_name)
113
+ layout = layout_name.try(:[], 'virtual_path') # Proc can be called without parameters since Rails 6
114
+
115
+ if template_name
116
+ active_datadog_span.set_tag(
117
+ Ext::TAG_TEMPLATE_NAME,
118
+ template_name
119
+ )
120
+ end
121
+
122
+ if layout
123
+ active_datadog_span.set_tag(
124
+ Ext::TAG_LAYOUT,
125
+ layout
126
+ )
127
+ end
128
+ end
129
+
129
130
  private
130
131
 
131
132
  attr_accessor :active_datadog_span
@@ -141,49 +142,23 @@ module Datadog
141
142
  self.active_datadog_span = nil
142
143
  end
143
144
  end
144
- end
145
145
 
146
- # Instrumentation for partial rendering
147
- module PartialRenderer
148
- def render(*args, &block)
149
- datadog_tracer.trace(
150
- Ext::SPAN_RENDER_PARTIAL,
151
- span_type: Datadog::Ext::HTTP::TEMPLATE
152
- ) do |span|
153
- with_datadog_span(span) { super(*args) }
154
- end
155
- end
146
+ # Rails >= 3.1 && < 6 template rendering
147
+ module Rails31To5
148
+ include Rails31Plus
156
149
 
157
- def render_partial(*args)
158
- begin
159
- template_name = Utils.normalize_template_name(@template.try('identifier'))
160
- if template_name
161
- active_datadog_span.set_tag(
162
- Ext::TAG_TEMPLATE_NAME,
163
- template_name
164
- )
165
- end
166
- rescue StandardError => e
167
- Datadog::Tracer.log.debug(e.message)
150
+ def datadog_parse_args(template, layout_name, *args)
151
+ [template, layout_name]
168
152
  end
169
-
170
- # execute the original function anyway
171
- super(*args)
172
153
  end
173
154
 
174
- private
175
-
176
- attr_accessor :active_datadog_span
155
+ # Rails >= 6 template rendering
156
+ module Rails6Plus
157
+ include Rails31Plus
177
158
 
178
- def datadog_tracer
179
- Datadog.configuration[:action_view][:tracer]
180
- end
181
-
182
- def with_datadog_span(span)
183
- self.active_datadog_span = span
184
- yield
185
- ensure
186
- self.active_datadog_span = nil
159
+ def datadog_parse_args(view, template, layout_name, *args)
160
+ [template, layout_name]
161
+ end
187
162
  end
188
163
  end
189
164
  end
@@ -1,7 +1,8 @@
1
1
  require 'ddtrace/ext/http'
2
2
  require 'ddtrace/contrib/patcher'
3
3
  require 'ddtrace/contrib/action_view/ext'
4
- require 'ddtrace/contrib/action_view/instrumentation'
4
+ require 'ddtrace/contrib/action_view/instrumentation/partial_renderer'
5
+ require 'ddtrace/contrib/action_view/instrumentation/template_renderer'
5
6
  require 'ddtrace/contrib/action_view/utils'
6
7
 
7
8
  module Datadog
@@ -30,12 +31,17 @@ module Datadog
30
31
  def patch_renderer
31
32
  do_once(:patch_renderer) do
32
33
  if defined?(::ActionView::TemplateRenderer) && defined?(::ActionView::PartialRenderer)
33
- ::ActionView::TemplateRenderer.send(:prepend, Instrumentation::TemplateRenderer::Rails31Plus)
34
- ::ActionView::PartialRenderer.send(:prepend, Instrumentation::PartialRenderer)
34
+ if Integration.version < Gem::Version.new('6.0.0')
35
+ ::ActionView::TemplateRenderer.send(:prepend, Instrumentation::TemplateRenderer::Rails31To5)
36
+ ::ActionView::PartialRenderer.send(:prepend, Instrumentation::PartialRenderer::RailsLessThan6)
37
+ else
38
+ ::ActionView::TemplateRenderer.send(:prepend, Instrumentation::TemplateRenderer::Rails6Plus)
39
+ ::ActionView::PartialRenderer.send(:prepend, Instrumentation::PartialRenderer::Rails6Plus)
40
+ end
35
41
  elsif defined?(::ActionView::Rendering) && defined?(::ActionView::Partials::PartialRenderer)
36
42
  # NOTE: Rails < 3.1 compatibility: different classes are used
37
43
  ::ActionView::Rendering.send(:prepend, Instrumentation::TemplateRenderer::Rails30)
38
- ::ActionView::Partials::PartialRenderer.send(:prepend, Instrumentation::PartialRenderer)
44
+ ::ActionView::Partials::PartialRenderer.send(:prepend, Instrumentation::PartialRenderer::RailsLessThan6)
39
45
  else
40
46
  Datadog::Tracer.log.debug('Expected Template/Partial classes not found; template rendering disabled')
41
47
  end
@@ -58,7 +58,7 @@ module Datadog
58
58
  end
59
59
 
60
60
  def datadog_configuration
61
- Datadog.configuration[:dalli]
61
+ Datadog.configuration[:dalli, "#{hostname}:#{port}"] || Datadog.configuration[:dalli]
62
62
  end
63
63
  end
64
64
  end
@@ -31,7 +31,7 @@ module Datadog
31
31
  attr_reader :app, :options
32
32
 
33
33
  def annotate!(span, env)
34
- span.resource = env[:method].to_s.upcase
34
+ span.resource = resource_name(env)
35
35
  span.service = service_name(env)
36
36
  span.span_type = Datadog::Ext::HTTP::TYPE_OUTBOUND
37
37
 
@@ -72,6 +72,10 @@ module Datadog
72
72
  options[:service_name]
73
73
  end
74
74
 
75
+ def resource_name(env)
76
+ env[:method].to_s.upcase
77
+ end
78
+
75
79
  def analytics_enabled?
76
80
  Contrib::Analytics.enabled?(options[:analytics_enabled])
77
81
  end
@@ -20,7 +20,9 @@ module Datadog
20
20
  end
21
21
 
22
22
  def format_command_args(command_args)
23
+ command_args = resolve_command_args(command_args)
23
24
  return 'AUTH ?' if auth_command?(command_args)
25
+
24
26
  cmd = command_args.map { |x| format_arg(x) }.join(' ')
25
27
  Utils.truncate(cmd, CMD_MAX_LEN, TOO_LONG_MARK)
26
28
  end
@@ -29,6 +31,16 @@ module Datadog
29
31
  return false unless command_args.is_a?(Array) && !command_args.empty?
30
32
  command_args.first.to_sym == :auth
31
33
  end
34
+
35
+ # Unwraps command array when Redis is called with the following syntax:
36
+ # redis.call([:cmd, 'arg1', ...])
37
+ def resolve_command_args(command_args)
38
+ return command_args.first if command_args.is_a?(Array) && command_args.first.is_a?(Array)
39
+
40
+ command_args
41
+ end
42
+
43
+ private_class_method :auth_command?, :resolve_command_args
32
44
  end
33
45
  end
34
46
  end
@@ -1,7 +1,7 @@
1
1
  module Datadog
2
2
  module VERSION
3
3
  MAJOR = 0
4
- MINOR = 27
4
+ MINOR = 28
5
5
  PATCH = 0
6
6
  PRE = nil
7
7
 
metadata CHANGED
@@ -1,111 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ddtrace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.27.0
4
+ version: 0.28.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-04 00:00:00.000000000 Z
11
+ date: 2019-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dogstatsd-ruby
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: 3.3.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: 3.3.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: opentracing
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: 0.4.1
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.4.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '10.5'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '10.5'
69
- - !ruby/object:Gem::Dependency
70
- name: rubocop
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '='
74
- - !ruby/object:Gem::Version
75
- version: 0.49.1
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '='
81
- - !ruby/object:Gem::Version
82
- version: 0.49.1
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: rspec
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - "~>"
73
+ - - ~>
88
74
  - !ruby/object:Gem::Version
89
75
  version: '3.0'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - "~>"
80
+ - - ~>
95
81
  - !ruby/object:Gem::Version
96
82
  version: '3.0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: rspec-collection_matchers
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
- - - "~>"
87
+ - - ~>
102
88
  - !ruby/object:Gem::Version
103
89
  version: '1.1'
104
90
  type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
- - - "~>"
94
+ - - ~>
109
95
  - !ruby/object:Gem::Version
110
96
  version: '1.1'
111
97
  - !ruby/object:Gem::Dependency
@@ -126,154 +112,154 @@ dependencies:
126
112
  name: appraisal
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
- - - "~>"
115
+ - - ~>
130
116
  - !ruby/object:Gem::Version
131
117
  version: '2.2'
132
118
  type: :development
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
- - - "~>"
122
+ - - ~>
137
123
  - !ruby/object:Gem::Version
138
124
  version: '2.2'
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: yard
141
127
  requirement: !ruby/object:Gem::Requirement
142
128
  requirements:
143
- - - "~>"
129
+ - - ~>
144
130
  - !ruby/object:Gem::Version
145
131
  version: '0.9'
146
132
  type: :development
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
- - - "~>"
136
+ - - ~>
151
137
  - !ruby/object:Gem::Version
152
138
  version: '0.9'
153
139
  - !ruby/object:Gem::Dependency
154
140
  name: webmock
155
141
  requirement: !ruby/object:Gem::Requirement
156
142
  requirements:
157
- - - "~>"
143
+ - - ~>
158
144
  - !ruby/object:Gem::Version
159
145
  version: '2.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
152
  version: '2.0'
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: builder
169
155
  requirement: !ruby/object:Gem::Requirement
170
156
  requirements:
171
- - - ">="
157
+ - - '>='
172
158
  - !ruby/object:Gem::Version
173
159
  version: '0'
174
160
  type: :development
175
161
  prerelease: false
176
162
  version_requirements: !ruby/object:Gem::Requirement
177
163
  requirements:
178
- - - ">="
164
+ - - '>='
179
165
  - !ruby/object:Gem::Version
180
166
  version: '0'
181
167
  - !ruby/object:Gem::Dependency
182
168
  name: ruby-prof
183
169
  requirement: !ruby/object:Gem::Requirement
184
170
  requirements:
185
- - - ">="
171
+ - - '>='
186
172
  - !ruby/object:Gem::Version
187
173
  version: '0'
188
174
  type: :development
189
175
  prerelease: false
190
176
  version_requirements: !ruby/object:Gem::Requirement
191
177
  requirements:
192
- - - ">="
178
+ - - '>='
193
179
  - !ruby/object:Gem::Version
194
180
  version: '0'
195
181
  - !ruby/object:Gem::Dependency
196
182
  name: sqlite3
197
183
  requirement: !ruby/object:Gem::Requirement
198
184
  requirements:
199
- - - "~>"
185
+ - - ~>
200
186
  - !ruby/object:Gem::Version
201
187
  version: 1.3.6
202
188
  type: :development
203
189
  prerelease: false
204
190
  version_requirements: !ruby/object:Gem::Requirement
205
191
  requirements:
206
- - - "~>"
192
+ - - ~>
207
193
  - !ruby/object:Gem::Version
208
194
  version: 1.3.6
209
195
  - !ruby/object:Gem::Dependency
210
196
  name: climate_control
211
197
  requirement: !ruby/object:Gem::Requirement
212
198
  requirements:
213
- - - "~>"
199
+ - - ~>
214
200
  - !ruby/object:Gem::Version
215
201
  version: 0.2.0
216
202
  type: :development
217
203
  prerelease: false
218
204
  version_requirements: !ruby/object:Gem::Requirement
219
205
  requirements:
220
- - - "~>"
206
+ - - ~>
221
207
  - !ruby/object:Gem::Version
222
208
  version: 0.2.0
223
209
  - !ruby/object:Gem::Dependency
224
210
  name: addressable
225
211
  requirement: !ruby/object:Gem::Requirement
226
212
  requirements:
227
- - - "~>"
213
+ - - ~>
228
214
  - !ruby/object:Gem::Version
229
215
  version: 2.4.0
230
216
  type: :development
231
217
  prerelease: false
232
218
  version_requirements: !ruby/object:Gem::Requirement
233
219
  requirements:
234
- - - "~>"
220
+ - - ~>
235
221
  - !ruby/object:Gem::Version
236
222
  version: 2.4.0
237
223
  - !ruby/object:Gem::Dependency
238
224
  name: redcarpet
239
225
  requirement: !ruby/object:Gem::Requirement
240
226
  requirements:
241
- - - "~>"
227
+ - - ~>
242
228
  - !ruby/object:Gem::Version
243
229
  version: '3.4'
244
230
  type: :development
245
231
  prerelease: false
246
232
  version_requirements: !ruby/object:Gem::Requirement
247
233
  requirements:
248
- - - "~>"
234
+ - - ~>
249
235
  - !ruby/object:Gem::Version
250
236
  version: '3.4'
251
237
  - !ruby/object:Gem::Dependency
252
238
  name: pry
253
239
  requirement: !ruby/object:Gem::Requirement
254
240
  requirements:
255
- - - "~>"
241
+ - - ~>
256
242
  - !ruby/object:Gem::Version
257
243
  version: 0.10.4
258
244
  type: :development
259
245
  prerelease: false
260
246
  version_requirements: !ruby/object:Gem::Requirement
261
247
  requirements:
262
- - - "~>"
248
+ - - ~>
263
249
  - !ruby/object:Gem::Version
264
250
  version: 0.10.4
265
251
  - !ruby/object:Gem::Dependency
266
252
  name: pry-stack_explorer
267
253
  requirement: !ruby/object:Gem::Requirement
268
254
  requirements:
269
- - - "~>"
255
+ - - ~>
270
256
  - !ruby/object:Gem::Version
271
257
  version: 0.4.9.2
272
258
  type: :development
273
259
  prerelease: false
274
260
  version_requirements: !ruby/object:Gem::Requirement
275
261
  requirements:
276
- - - "~>"
262
+ - - ~>
277
263
  - !ruby/object:Gem::Version
278
264
  version: 0.4.9.2
279
265
  description: |
@@ -286,21 +272,21 @@ executables: []
286
272
  extensions: []
287
273
  extra_rdoc_files: []
288
274
  files:
289
- - ".circleci/config.yml"
290
- - ".circleci/images/primary/Dockerfile-2.0.0"
291
- - ".circleci/images/primary/Dockerfile-2.1.10"
292
- - ".circleci/images/primary/Dockerfile-2.2.10"
293
- - ".circleci/images/primary/Dockerfile-2.3.8"
294
- - ".circleci/images/primary/Dockerfile-2.4.6"
295
- - ".circleci/images/primary/Dockerfile-2.5.6"
296
- - ".circleci/images/primary/Dockerfile-2.6.4"
297
- - ".dockerignore"
298
- - ".env"
299
- - ".github/CODEOWNERS"
300
- - ".gitignore"
301
- - ".rspec"
302
- - ".rubocop.yml"
303
- - ".yardopts"
275
+ - .circleci/config.yml
276
+ - .circleci/images/primary/Dockerfile-2.0.0
277
+ - .circleci/images/primary/Dockerfile-2.1.10
278
+ - .circleci/images/primary/Dockerfile-2.2.10
279
+ - .circleci/images/primary/Dockerfile-2.3.8
280
+ - .circleci/images/primary/Dockerfile-2.4.6
281
+ - .circleci/images/primary/Dockerfile-2.5.6
282
+ - .circleci/images/primary/Dockerfile-2.6.4
283
+ - .dockerignore
284
+ - .env
285
+ - .github/CODEOWNERS
286
+ - .gitignore
287
+ - .rspec
288
+ - .rubocop.yml
289
+ - .yardopts
304
290
  - Appraisals
305
291
  - CHANGELOG.md
306
292
  - CONTRIBUTING.md
@@ -341,7 +327,8 @@ files:
341
327
  - lib/ddtrace/contrib/action_pack/utils.rb
342
328
  - lib/ddtrace/contrib/action_view/configuration/settings.rb
343
329
  - lib/ddtrace/contrib/action_view/ext.rb
344
- - lib/ddtrace/contrib/action_view/instrumentation.rb
330
+ - lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb
331
+ - lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb
345
332
  - lib/ddtrace/contrib/action_view/integration.rb
346
333
  - lib/ddtrace/contrib/action_view/patcher.rb
347
334
  - lib/ddtrace/contrib/action_view/utils.rb
@@ -644,17 +631,17 @@ require_paths:
644
631
  - lib
645
632
  required_ruby_version: !ruby/object:Gem::Requirement
646
633
  requirements:
647
- - - ">="
634
+ - - '>='
648
635
  - !ruby/object:Gem::Version
649
636
  version: 2.0.0
650
637
  required_rubygems_version: !ruby/object:Gem::Requirement
651
638
  requirements:
652
- - - ">="
639
+ - - '>='
653
640
  - !ruby/object:Gem::Version
654
641
  version: '0'
655
642
  requirements: []
656
643
  rubyforge_project:
657
- rubygems_version: 2.6.14
644
+ rubygems_version: 2.0.14.1
658
645
  signing_key:
659
646
  specification_version: 4
660
647
  summary: Datadog tracing code for your Ruby applications