ddtrace 0.27.0 → 0.28.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
  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