scout_apm 2.4.21 → 2.4.22

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: 7414d9bde0f829ed4cfc7975c5bdca2e5cda5910
4
- data.tar.gz: 6a0ab71bfa23362adefb328f69a887bae5551b6b
3
+ metadata.gz: 9fa219a419aefb2e17c508ea1c337a2aeb336a21
4
+ data.tar.gz: bcedf91bcbac7ed3c111d0018af5f22123b54af3
5
5
  SHA512:
6
- metadata.gz: 99e1906e5273202785cbd6c75acc4a833887f1a27240e7763b16d7296d1b4ba30a080729b67214372de08170c06541869b94c0d825726822be305ab05d12651b
7
- data.tar.gz: 8f44f8874f66b75ac8e1146678a7c91964661422b9e3386eccc0bca115269d9874403dc042cfc771da48552636a23e33c219a0648400615e8fbbf49027117b86
6
+ metadata.gz: 1917e106d1ea9048bd9b68bfafbd3c24717db6827eee0510fc86d1e23da7f504df8dd2786b517420ac73e799ac38c83680635410de1100c901ecd3b8d895373a
7
+ data.tar.gz: 42ebd73a8e0048387ab628e9ae3e80186a7a548b0f75051b5f560bd529f893add7828f4747cb1fd9bb741a6d544a1fe1c8bcf27b61960d7dc4d4fdd3bf9ff7af
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
+
2
3
  rvm:
3
4
  - "1.8.7"
4
5
  - "1.9.3"
@@ -6,10 +7,17 @@ rvm:
6
7
  - "2.2"
7
8
  - "2.4"
8
9
  - "2.5"
10
+
9
11
  cache: bundler
12
+
10
13
  before_install:
11
- - gem update --system
12
- - gem install bundler
14
+ # Don't gem update, since it tries to install RubyGems requiring 2.3+.
15
+ # - gem update --system
16
+
17
+ # Lock down the version. Newer versions only support Ruby 2.3+, but we need
18
+ # to test back further.
19
+ - gem install bundler -v '1.17.3'
20
+
13
21
  jobs:
14
22
  include:
15
23
  - script: bundle exec rake test
data/CHANGELOG.markdown CHANGED
@@ -1,3 +1,8 @@
1
+ # 2.4.22
2
+
3
+ * Support Rails 6.0 View Instruments (#251)
4
+ * Update documentation URLs (#236)
5
+
1
6
  # 2.4.21
2
7
 
3
8
  * App & Background Integrations only install when needed (#228)
data/README.markdown CHANGED
@@ -12,8 +12,8 @@ The Scout agent is engineered to do some wonderful things:
12
12
 
13
13
  * A unique focus on identifying those hard-to-investigate outliers like memory bloat, N+1s, and user-specific problems. [See an example workflow](http://scoutapp.com/newrelic-alternative).
14
14
  * [Low-overhead](http://blog.scoutapp.com/articles/2016/02/07/overhead-benchmarks-new-relic-vs-scout)
15
- * View your performance metrics during development with [DevTrace](http://help.apm.scoutapp.com/#devtrace) and in production via [server_timing](https://github.com/scoutapp/ruby_server_timing).
16
- * Production-Safe profiling of custom code via [ScoutProf](http://help.apm.scoutapp.com/#scoutprof) (BETA).
15
+ * View your performance metrics during development with [DevTrace](https://help.apm.scoutapp.com/#devtrace) and in production via [server_timing](https://github.com/scoutapp/ruby_server_timing).
16
+ * Production-Safe profiling of custom code via [ScoutProf](https://help.apm.scoutapp.com/#scoutprof) (BETA).
17
17
 
18
18
  ## Getting Started
19
19
 
@@ -64,7 +64,7 @@ SCOUT_DEV_TRACE=true rails server
64
64
  ## Docs
65
65
 
66
66
  For the complete list of supported frameworks, Rubies, configuration options
67
- and more, see our [help site](http://help.apm.scoutapp.com/).
67
+ and more, see our [help site](https://help.apm.scoutapp.com/).
68
68
 
69
69
  ## Help
70
70
 
@@ -205,7 +205,7 @@ module ScoutApm
205
205
  if !@config.any_keys_found?
206
206
  logger.info("No configuration file loaded, and no configuration found in ENV. " +
207
207
  "For assistance configuring Scout, visit " +
208
- "http://help.apm.scoutapp.com/#configuration-options")
208
+ "https://help.apm.scoutapp.com/#ruby-configuration-options")
209
209
  end
210
210
  end
211
211
  end
@@ -6,7 +6,7 @@ require 'scout_apm/environment'
6
6
  # Valid Config Options:
7
7
  #
8
8
  # This list is complete, but some are old and unused, or for developers of
9
- # scout_apm itself. See the documentation at http://help.apm.scoutapp.com for
9
+ # scout_apm itself. See the documentation at https://help.apm.scoutapp.com for
10
10
  # customer-focused documentation.
11
11
  #
12
12
  # application_root - override the detected directory of the application
@@ -1,6 +1,13 @@
1
+ # Note, this instrument has the same logic in both Tracer and Module Prepend
2
+ # versions. If you update, be sure you update in both spots.
3
+ #
4
+ # The prepend version was added for Rails 6 support - ActiveRecord prepends on
5
+ # top of PartialRenderer#collection_with_template, which can (and does) cause
6
+ # infinite loops with our alias_method approach
1
7
  module ScoutApm
2
8
  module Instruments
3
- # instrumentation for Rails 3 and Rails 4 is the same.
9
+ # Instrumentation for Rails 3, 4, 5 is the same, using tracer.
10
+ # Rails 6 switches to using Module#prepend
4
11
  class ActionView
5
12
  attr_reader :context
6
13
 
@@ -18,36 +25,104 @@ module ScoutApm
18
25
  end
19
26
 
20
27
  def install
21
- if defined?(::ActionView) && defined?(::ActionView::PartialRenderer)
22
- @installed = true
23
-
24
- logger.info "Instrumenting ActionView::PartialRenderer"
25
- ::ActionView::PartialRenderer.class_eval do
26
- include ScoutApm::Tracer
27
-
28
- instrument_method :render_partial,
29
- :type => "View",
30
- :name => '#{@template.virtual_path rescue "Unknown Partial"}/Rendering',
31
- :scope => true
32
-
33
- instrument_method :collection_with_template,
34
- :type => "View",
35
- :name => '#{@template.virtual_path rescue "Unknown Collection"}/Rendering',
36
- :scope => true
28
+ return unless defined?(::ActionView) && defined?(::ActionView::PartialRenderer)
29
+
30
+ if defined?(::Rails) && defined?(::Rails::VERSION) && defined?(::Rails::VERSION::MAJOR) && ::Rails::VERSION::MAJOR < 6
31
+ install_using_tracer
32
+ else
33
+ install_using_prepend
34
+ end
35
+ @installed = true
36
+ end
37
+
38
+ def install_using_tracer
39
+ logger.info "Instrumenting ActionView::PartialRenderer"
40
+ ::ActionView::PartialRenderer.class_eval do
41
+ include ScoutApm::Tracer
42
+
43
+ instrument_method :render_partial,
44
+ :type => "View",
45
+ :name => '#{@template.virtual_path rescue "Unknown Partial"}/Rendering',
46
+ :scope => true
47
+
48
+ instrument_method :collection_with_template,
49
+ :type => "View",
50
+ :name => '#{@template.virtual_path rescue "Unknown Collection"}/Rendering',
51
+ :scope => true
52
+ end
53
+
54
+ logger.info "Instrumenting ActionView::TemplateRenderer"
55
+ ::ActionView::TemplateRenderer.class_eval do
56
+ include ScoutApm::Tracer
57
+ instrument_method :render_template,
58
+ :type => "View",
59
+ :name => '#{args[0].virtual_path rescue "Unknown"}/Rendering',
60
+ :scope => true
61
+ end
62
+ end
63
+
64
+ def install_using_prepend
65
+ logger.info "Instrumenting ActionView::PartialRenderer"
66
+ ::ActionView::PartialRenderer.prepend(ActionViewPartialRendererInstruments)
67
+
68
+ logger.info "Instrumenting ActionView::TemplateRenderer"
69
+ ::ActionView::TemplateRenderer.prepend(ActionViewTemplateRendererInstruments)
70
+ end
71
+
72
+ module ActionViewPartialRendererInstruments
73
+ def render_partial(*args)
74
+ req = ScoutApm::RequestManager.lookup
75
+
76
+ template_name = @template.virtual_path rescue "Unknown Partial"
77
+ layer_name = template_name + "/Rendering"
78
+
79
+ layer = ScoutApm::Layer.new("View", layer_name)
80
+ layer.subscopable!
81
+
82
+ begin
83
+ req.start_layer(layer)
84
+ super(*args)
85
+ ensure
86
+ req.stop_layer
37
87
  end
88
+ end
89
+
90
+ def collection_with_template(*args)
91
+ req = ScoutApm::RequestManager.lookup
38
92
 
39
- logger.info "Instrumenting ActionView::TemplateRenderer"
40
- ::ActionView::TemplateRenderer.class_eval do
41
- include ScoutApm::Tracer
42
- instrument_method :render_template,
43
- :type => "View",
44
- :name => '#{args[0].virtual_path rescue "Unknown"}/Rendering',
45
- :scope => true
93
+ template_name = @template.virtual_path rescue "Unknown Collection"
94
+ layer_name = template_name + "/Rendering"
95
+
96
+ layer = ScoutApm::Layer.new("View", layer_name)
97
+ layer.subscopable!
98
+
99
+ begin
100
+ req.start_layer(layer)
101
+ super(*args)
102
+ ensure
103
+ req.stop_layer
104
+ end
105
+ end
106
+ end
107
+
108
+ module ActionViewTemplateRendererInstruments
109
+ def render_template(*args)
110
+ req = ScoutApm::RequestManager.lookup
111
+
112
+ template_name = args[0].virtual_path rescue "Unknown"
113
+ layer_name = template_name + "/Rendering"
114
+
115
+ layer = ScoutApm::Layer.new("View", layer_name)
116
+ layer.subscopable!
117
+
118
+ begin
119
+ req.start_layer(layer)
120
+ super(*args)
121
+ ensure
122
+ req.stop_layer
46
123
  end
47
124
  end
48
125
  end
49
126
  end
50
127
  end
51
128
  end
52
-
53
-
@@ -1,4 +1,3 @@
1
1
  module ScoutApm
2
- VERSION = "2.4.21"
2
+ VERSION = "2.4.22"
3
3
  end
4
-
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scout_apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.21
4
+ version: 2.4.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derek Haynes
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-11-28 00:00:00.000000000 Z
12
+ date: 2019-03-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -392,7 +392,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
392
392
  version: '0'
393
393
  requirements: []
394
394
  rubyforge_project: scout_apm
395
- rubygems_version: 2.4.5.2
395
+ rubygems_version: 2.6.14.3
396
396
  signing_key:
397
397
  specification_version: 4
398
398
  summary: Ruby application performance monitoring