traceview 3.3.3 → 3.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +18 -18
  3. data/CHANGELOG.md +13 -0
  4. data/README.md +3 -1
  5. data/Rakefile +18 -9
  6. data/gemfiles/delayed_job.gemfile +38 -0
  7. data/gemfiles/frameworks.gemfile +1 -2
  8. data/gemfiles/libraries.gemfile +1 -2
  9. data/gemfiles/rails23.gemfile +1 -2
  10. data/gemfiles/rails30.gemfile +4 -2
  11. data/gemfiles/rails31.gemfile +4 -2
  12. data/gemfiles/rails32.gemfile +4 -2
  13. data/gemfiles/rails40.gemfile +4 -2
  14. data/gemfiles/rails41.gemfile +4 -2
  15. data/gemfiles/rails42.gemfile +4 -2
  16. data/lib/traceview/api/layerinit.rb +3 -5
  17. data/lib/traceview/api/logging.rb +63 -50
  18. data/lib/traceview/api/memcache.rb +10 -9
  19. data/lib/traceview/api/profiling.rb +6 -7
  20. data/lib/traceview/api/util.rb +1 -1
  21. data/lib/traceview/base.rb +21 -7
  22. data/lib/traceview/config.rb +8 -4
  23. data/lib/traceview/frameworks/padrino.rb +2 -2
  24. data/lib/traceview/frameworks/rails.rb +26 -32
  25. data/lib/traceview/frameworks/rails/inst/action_controller.rb +3 -3
  26. data/lib/traceview/frameworks/rails/inst/action_view.rb +4 -2
  27. data/lib/traceview/frameworks/rails/inst/action_view_2x.rb +4 -2
  28. data/lib/traceview/frameworks/rails/inst/action_view_30.rb +4 -2
  29. data/lib/traceview/frameworks/rails/inst/connection_adapters/utils.rb +3 -3
  30. data/lib/traceview/frameworks/sinatra.rb +1 -1
  31. data/lib/traceview/frameworks/sinatra/templates.rb +1 -1
  32. data/lib/traceview/inst/dalli.rb +4 -5
  33. data/lib/traceview/inst/delayed_job.rb +92 -0
  34. data/lib/traceview/inst/em-http-request.rb +3 -0
  35. data/lib/traceview/inst/excon.rb +3 -3
  36. data/lib/traceview/inst/faraday.rb +4 -1
  37. data/lib/traceview/inst/mongo.rb +10 -5
  38. data/lib/traceview/inst/moped.rb +4 -4
  39. data/lib/traceview/inst/redis.rb +5 -7
  40. data/lib/traceview/inst/resque.rb +3 -3
  41. data/lib/traceview/inst/rest-client.rb +2 -2
  42. data/lib/traceview/inst/sidekiq-client.rb +3 -0
  43. data/lib/traceview/inst/sidekiq-worker.rb +3 -0
  44. data/lib/traceview/inst/twitter-cassandra.rb +8 -4
  45. data/lib/traceview/test.rb +30 -1
  46. data/lib/traceview/util.rb +7 -0
  47. data/lib/traceview/version.rb +2 -2
  48. data/test/frameworks/rails3x_test.rb +12 -2
  49. data/test/frameworks/rails4x_test.rb +12 -2
  50. data/test/instrumentation/curb_test.rb +2 -2
  51. data/test/instrumentation/dalli_test.rb +121 -118
  52. data/test/instrumentation/httpclient_test.rb +0 -1
  53. data/test/jobs/delayed_job/db_worker_job.rb +29 -0
  54. data/test/jobs/delayed_job/error_worker_job.rb +10 -0
  55. data/test/jobs/delayed_job/remote_call_worker_job.rb +20 -0
  56. data/test/minitest_helper.rb +8 -3
  57. data/test/models/widget.rb +19 -0
  58. data/test/queues/delayed_job-client_test.rb +95 -0
  59. data/test/queues/delayed_job-worker_test.rb +91 -0
  60. data/test/servers/delayed_job.rb +102 -0
  61. data/test/servers/rails3x_8140.rb +17 -1
  62. data/test/servers/rails4x_8140.rb +18 -1
  63. data/test/support/auto_tracing.rb +40 -0
  64. data/test/support/config_test.rb +5 -1
  65. data/traceview.gemspec +1 -0
  66. metadata +34 -6
  67. data/test/instrumentation/delayed_job-client_test.rb +0 -128
  68. data/test/instrumentation/delayed_job-worker_test.rb +0 -177
@@ -13,17 +13,18 @@ module TraceView
13
13
  end
14
14
 
15
15
  def remote_host(key)
16
- return unless defined?(Lib.memcached_server_by_key) \
17
- && defined?(@struct) && defined?(is_unix_socket?)
16
+ return unless defined?(Lib.memcached_server_by_key) &&
17
+ defined?(@struct) && defined?(is_unix_socket?)
18
18
 
19
19
  server_as_array = Lib.memcached_server_by_key(@struct, key.to_s)
20
- if server_as_array.is_a?(Array)
21
- server = server_as_array.first
22
- if is_unix_socket?(server)
23
- return 'localhost'
24
- elsif defined?(server.hostname)
25
- return server.hostname
26
- end
20
+
21
+ return unless server_as_array.is_a?(Array)
22
+
23
+ server = server_as_array.first
24
+ if is_unix_socket?(server)
25
+ 'localhost'
26
+ elsif defined?(server.hostname)
27
+ server.hostname
27
28
  end
28
29
  end
29
30
  end
@@ -69,13 +69,12 @@ module TraceView
69
69
  # TraceView::API.profile_method(Array, :sort, opts)
70
70
  #
71
71
  def profile_method(klass, method, opts = {}, extra_kvs = {})
72
-
73
72
  # If we're on an unsupported platform (ahem Mac), just act
74
73
  # like we did something to nicely play the no-op part.
75
74
  return true unless TraceView.loaded
76
75
 
77
76
  if RUBY_VERSION < '1.9.3'
78
- TraceView.logger.warn "[traceview/error] profile_method: Use the legacy method profiling for Ruby versions before 1.9.3"
77
+ TraceView.logger.warn '[traceview/error] profile_method: Use the legacy method profiling for Ruby versions before 1.9.3'
79
78
  return false
80
79
 
81
80
  elsif !klass.is_a?(Module)
@@ -110,7 +109,7 @@ module TraceView
110
109
 
111
110
  # Check if already profiled
112
111
  if klass.instance_methods.include?(with_traceview.to_sym) ||
113
- klass.singleton_methods.include?(with_traceview.to_sym)
112
+ klass.singleton_methods.include?(with_traceview.to_sym)
114
113
  TraceView.logger.warn "[traceview/error] profile_method: #{klass}::#{method} already profiled."
115
114
  TraceView.logger.warn "[traceview/error] profile_method: #{__FILE__}:#{__LINE__}"
116
115
  return false
@@ -130,17 +129,17 @@ module TraceView
130
129
 
131
130
  if instance_method
132
131
  klass.class_eval do
133
- define_method(with_traceview) { | *args, &block |
132
+ define_method(with_traceview) do |*args, &block|
134
133
  profile_wrapper(without_traceview, report_kvs, opts, *args, &block)
135
- }
134
+ end
136
135
 
137
136
  alias_method without_traceview, "#{method}"
138
137
  alias_method "#{method}", with_traceview
139
138
  end
140
139
  elsif class_method
141
- klass.define_singleton_method(with_traceview) { | *args, &block |
140
+ klass.define_singleton_method(with_traceview) do |*args, &block|
142
141
  profile_wrapper(without_traceview, report_kvs, opts, *args, &block)
143
- }
142
+ end
144
143
 
145
144
  klass.singleton_class.class_eval do
146
145
  alias_method without_traceview, "#{method}"
@@ -106,7 +106,7 @@ module TraceView
106
106
  # Class
107
107
  kv['Class'] = klass.to_s
108
108
 
109
- elsif (!klass.is_a?(Class) && !klass.is_a?(Module))
109
+ elsif !klass.is_a?(Class) && !klass.is_a?(Module)
110
110
  # Class instance
111
111
  kv['Class'] = klass.class.to_s
112
112
 
@@ -75,7 +75,7 @@ module TraceViewBase
75
75
 
76
76
  # This gives us pretty accessors with questions marks at the end
77
77
  # e.g. is_continued_trace --> is_continued_trace?
78
- TraceView.methods.select{ |m| m =~ /^is_|^has_/ }.each do |c|
78
+ TraceView.methods.select { |m| m =~ /^is_|^has_/ }.each do |c|
79
79
  unless c =~ /\?$|=$/
80
80
  # TraceView.logger.debug "aliasing #{c}? to #{c}"
81
81
  alias_method "#{c}?", c
@@ -111,7 +111,7 @@ module TraceViewBase
111
111
  # operation tracing or one instrumented operation calling another.
112
112
  #
113
113
  def tracing_layer?(layer)
114
- return TraceView.layer == layer
114
+ TraceView.layer == layer
115
115
  end
116
116
 
117
117
  ##
@@ -131,6 +131,20 @@ module TraceViewBase
131
131
  end
132
132
  end
133
133
 
134
+ ##
135
+ # entry_layer?
136
+ #
137
+ # Determines if the passed layer is an entry only
138
+ # layer where we would want to use smart tracing.
139
+ #
140
+ # Entry only layers are layers that _only_ start traces
141
+ # and doesn't directly receive incoming context such as
142
+ # DelayedJob or Sidekiq workers.
143
+ #
144
+ def entry_layer?(layer)
145
+ %w(delayed_job-worker).include?(layer.to_s)
146
+ end
147
+
134
148
  ##
135
149
  # Returns true if the tracing_mode is set to always.
136
150
  # False otherwise
@@ -160,7 +174,7 @@ module TraceViewBase
160
174
  # False otherwise
161
175
  #
162
176
  def through?
163
- TraceView::Config[:tracing_mode] == 'through'
177
+ TraceView::Config[:tracing_mode].to_s == 'through'
164
178
  end
165
179
 
166
180
  ##
@@ -186,7 +200,7 @@ module TraceViewBase
186
200
  #
187
201
  def forking_webserver?
188
202
  if (defined?(::Unicorn) && ($PROGRAM_NAME =~ /unicorn/i)) ||
189
- (defined?(::Puma) && ($PROGRAM_NAME =~ /puma/i))
203
+ (defined?(::Puma) && ($PROGRAM_NAME =~ /puma/i))
190
204
  true
191
205
  else
192
206
  false
@@ -199,7 +213,7 @@ module TraceViewBase
199
213
  def pry!
200
214
  # Only valid for development or test environments
201
215
  env = ENV['RACK_ENV'] || ENV['RAILS_ENV']
202
- return unless [ "development", "test" ].include? env
216
+ return unless %w(development, test).include? env
203
217
 
204
218
  if RUBY_VERSION > '1.8.7'
205
219
  require 'pry-byebug'
@@ -210,7 +224,7 @@ module TraceViewBase
210
224
  Pry.commands.alias_command 'n', 'next'
211
225
  Pry.commands.alias_command 'f', 'finish'
212
226
 
213
- Pry::Commands.command /^$/, "repeat last command" do
227
+ Pry::Commands.command /^$/, 'repeat last command' do
214
228
  _pry_.run_command Pry.history.to_a.last
215
229
  end
216
230
  end
@@ -226,7 +240,7 @@ module TraceViewBase
226
240
  # or not
227
241
  #
228
242
  def framework?
229
- defined?(::Rails) or defined?(::Sinatra) or defined?(::Padrino) or defined?(::Grape)
243
+ defined?(::Rails) && defined?(::Sinatra) && defined?(::Padrino) && defined?(::Grape)
230
244
  end
231
245
 
232
246
  ##
@@ -12,10 +12,12 @@ module TraceView
12
12
  @@config = {}
13
13
 
14
14
  @@instrumentation = [:action_controller, :action_view, :active_record,
15
- :cassandra, :curb, :dalli, :em_http_request, :excon, :faraday,
16
- :grape, :httpclient, :nethttp, :memcached, :memcache, :mongo,
17
- :moped, :rack, :redis, :resqueclient, :resqueworker,
18
- :rest_client, :sequel, :sidekiqclient, :sidekiqworker, :typhoeus]
15
+ :cassandra, :curb, :dalli, :delayed_jobclient,
16
+ :delayed_jobworker, :em_http_request, :excon,
17
+ :faraday, :grape, :httpclient, :nethttp, :memcached,
18
+ :memcache, :mongo, :moped, :rack, :redis, :resqueclient,
19
+ :resqueworker, :rest_client, :sequel, :sidekiqclient,
20
+ :sidekiqworker, :typhoeus]
19
21
 
20
22
  # Subgrouping of instrumentation
21
23
  @@http_clients = [:curb, :excon, :em_http_request, :faraday, :httpclient, :nethttp, :rest_client, :typhoeus]
@@ -46,6 +48,8 @@ module TraceView
46
48
  TraceView::Config[:cassandra][:collect_backtraces] = true
47
49
  TraceView::Config[:curb][:collect_backtraces] = true
48
50
  TraceView::Config[:dalli][:collect_backtraces] = false
51
+ TraceView::Config[:delayed_jobclient][:collect_backtraces] = false
52
+ TraceView::Config[:delayed_jobworker][:collect_backtraces] = false
49
53
  TraceView::Config[:em_http_request][:collect_backtraces] = false
50
54
  TraceView::Config[:excon][:collect_backtraces] = true
51
55
  TraceView::Config[:faraday][:collect_backtraces] = false
@@ -22,7 +22,7 @@ module TraceView
22
22
  r = dispatch_without_traceview
23
23
 
24
24
  # Report Controller/Action as best possible
25
- if request.controller and not request.controller.empty?
25
+ if request.controller && !request.controller.empty?
26
26
  report_kvs[:Controller] = request.controller
27
27
  else
28
28
  report_kvs[:Controller] = self.class
@@ -44,7 +44,7 @@ end
44
44
  if defined?(::Padrino)
45
45
  # This instrumentation is a superset of the Sinatra instrumentation similar
46
46
  # to how Padrino is a superset of Sinatra itself.
47
- ::TraceView.logger.info "[traceview/loading] Instrumenting Padrino" if TraceView::Config[:verbose]
47
+ ::TraceView.logger.info '[traceview/loading] Instrumenting Padrino' if TraceView::Config[:verbose]
48
48
 
49
49
  require 'traceview/frameworks/padrino/templates'
50
50
 
@@ -11,34 +11,30 @@ module TraceView
11
11
  @@rum_ftr_tmpl = File.read(File.dirname(__FILE__) + '/rails/helpers/rum/rum_footer.js.erb')
12
12
 
13
13
  def traceview_rum_header
14
- begin
15
- return unless TraceView::Config.rum_id
16
- if TraceView.tracing?
17
- if request.xhr?
18
- return raw(ERB.new(@@rum_xhr_tmpl).result)
19
- else
20
- return raw(ERB.new(@@rum_hdr_tmpl).result)
21
- end
14
+ return unless TraceView::Config.rum_id
15
+ if TraceView.tracing?
16
+ if request.xhr?
17
+ return raw(ERB.new(@@rum_xhr_tmpl).result)
18
+ else
19
+ return raw(ERB.new(@@rum_hdr_tmpl).result)
22
20
  end
23
- rescue StandardError => e
24
- TraceView.logger.warn "traceview_rum_header: #{e.message}."
25
- return ""
26
21
  end
22
+ rescue StandardError => e
23
+ TraceView.logger.warn "traceview_rum_header: #{e.message}."
24
+ return ''
27
25
  end
28
26
  alias_method :oboe_rum_header, :traceview_rum_header
29
27
 
30
28
  def traceview_rum_footer
31
- begin
32
- return unless TraceView::Config.rum_id
33
- if TraceView.tracing?
34
- # Even though the footer template is named xxxx.erb, there are no ERB tags in it so we'll
35
- # skip that step for now
36
- return raw(@@rum_ftr_tmpl)
37
- end
38
- rescue StandardError => e
39
- TraceView.logger.warn "traceview_rum_footer: #{e.message}."
40
- return ""
29
+ return unless TraceView::Config.rum_id
30
+ if TraceView.tracing?
31
+ # Even though the footer template is named xxxx.erb, there are no ERB tags in it so we'll
32
+ # skip that step for now
33
+ return raw(@@rum_ftr_tmpl)
41
34
  end
35
+ rescue StandardError => e
36
+ TraceView.logger.warn "traceview_rum_footer: #{e.message}."
37
+ return ''
42
38
  end
43
39
  alias_method :oboe_rum_footer, :traceview_rum_footer
44
40
  end # Helpers
@@ -47,7 +43,7 @@ module TraceView
47
43
  # Force load the TraceView Rails initializer if there is one
48
44
  # Prefer traceview.rb but give priority to the legacy tracelytics.rb if it exists
49
45
  if ::Rails::VERSION::MAJOR > 2
50
- rails_root = "#{::Rails.root.to_s}"
46
+ rails_root = "#{::Rails.root}"
51
47
  else
52
48
  rails_root = "#{RAILS_ROOT}"
53
49
  end
@@ -55,16 +51,16 @@ module TraceView
55
51
  #
56
52
  # We've been through 3 initializer names. Try each one.
57
53
  #
58
- if File.exists?("#{rails_root}/config/initializers/tracelytics.rb")
54
+ if File.exist?("#{rails_root}/config/initializers/tracelytics.rb")
59
55
  tr_initializer = "#{rails_root}/config/initializers/tracelytics.rb"
60
56
 
61
- elsif File.exists?("#{rails_root}/config/initializers/oboe.rb")
57
+ elsif File.exist?("#{rails_root}/config/initializers/oboe.rb")
62
58
  tr_initializer = "#{rails_root}/config/initializers/oboe.rb"
63
59
 
64
60
  else
65
61
  tr_initializer = "#{rails_root}/config/initializers/traceview.rb"
66
62
  end
67
- require tr_initializer if File.exists?(tr_initializer)
63
+ require tr_initializer if File.exist?(tr_initializer)
68
64
  end
69
65
 
70
66
  def self.load_instrumentation
@@ -94,7 +90,6 @@ module TraceView
94
90
  ActionView::Base.send :include, TraceView::Rails::Helpers
95
91
  end
96
92
  end
97
-
98
93
  end # Rails
99
94
  end # TraceView
100
95
 
@@ -104,18 +99,17 @@ if defined?(::Rails)
104
99
  if ::Rails::VERSION::MAJOR > 2
105
100
  module TraceView
106
101
  class Railtie < ::Rails::Railtie
107
-
108
102
  initializer 'traceview.helpers' do
109
103
  TraceView::Rails.include_helpers
110
104
  end
111
105
 
112
106
  initializer 'traceview.rack' do |app|
113
- TraceView.logger.info "[traceview/loading] Instrumenting rack" if TraceView::Config[:verbose]
114
- app.config.middleware.insert 0, "TraceView::Rack"
107
+ TraceView.logger.info '[traceview/loading] Instrumenting rack' if TraceView::Config[:verbose]
108
+ app.config.middleware.insert 0, 'TraceView::Rack'
115
109
  end
116
110
 
117
111
  config.after_initialize do
118
- TraceView.logger = ::Rails.logger if ::Rails.logger
112
+ TraceView.logger = ::Rails.logger if ::Rails.logger && !ENV.key?('TRACEVIEW_GEM_TEST')
119
113
 
120
114
  TraceView::Loading.load_access_key
121
115
  TraceView::Inst.load_instrumentation
@@ -133,8 +127,8 @@ if defined?(::Rails)
133
127
  TraceView::Loading.load_access_key
134
128
 
135
129
  Rails.configuration.after_initialize do
136
- TraceView.logger.info "[traceview/loading] Instrumenting rack" if TraceView::Config[:verbose]
137
- Rails.configuration.middleware.insert 0, "TraceView::Rack"
130
+ TraceView.logger.info '[traceview/loading] Instrumenting rack' if TraceView::Config[:verbose]
131
+ Rails.configuration.middleware.insert 0, 'TraceView::Rack'
138
132
 
139
133
  TraceView::Inst.load_instrumentation
140
134
  TraceView::Rails.load_instrumentation
@@ -19,12 +19,12 @@ module TraceView
19
19
  def has_handler?(exception)
20
20
  # Don't log exceptions if they have a rescue handler set
21
21
  has_handler = false
22
- rescue_handlers.detect { | klass_name, handler |
22
+ rescue_handlers.detect do |klass_name, _handler|
23
23
  # Rescue handlers can be specified as strings or constant names
24
24
  klass = self.class.const_get(klass_name) rescue nil
25
25
  klass ||= klass_name.constantize rescue nil
26
26
  has_handler = exception.is_a?(klass) if klass
27
- }
27
+ end
28
28
  has_handler
29
29
  rescue => e
30
30
  TraceView.logger.debug "[traceview/debug] Error searching Rails handlers: #{e.message}"
@@ -101,7 +101,7 @@ module TraceView
101
101
  def process_action_with_traceview(*args)
102
102
  report_kvs = {
103
103
  :Controller => self.class.name,
104
- :Action => self.action_name,
104
+ :Action => action_name,
105
105
  }
106
106
  TraceView::API.log(nil, 'info', report_kvs)
107
107
 
@@ -23,7 +23,8 @@ if defined?(ActionView::Base) && TraceView::Config[:action_view][:enabled]
23
23
  entry_kvs[:Module] = :ActionView
24
24
  entry_kvs[:File] = __FILE__
25
25
  entry_kvs[:LineNumber] = __LINE__
26
- rescue
26
+ rescue => e
27
+ TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
27
28
  end
28
29
 
29
30
  TraceView::API.profile(name, entry_kvs, TraceView::Config[:action_view][:collect_backtraces]) do
@@ -41,7 +42,8 @@ if defined?(ActionView::Base) && TraceView::Config[:action_view][:enabled]
41
42
  entry_kvs[:Module] = :ActionView
42
43
  entry_kvs[:File] = __FILE__
43
44
  entry_kvs[:LineNumber] = __LINE__
44
- rescue
45
+ rescue => e
46
+ TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
45
47
  end
46
48
 
47
49
  TraceView::API.profile(name, entry_kvs, TraceView::Config[:action_view][:collect_backtraces]) do
@@ -19,7 +19,8 @@ if defined?(ActionView::Base) && TraceView::Config[:action_view][:enabled]
19
19
  entry_kvs[:Module] = :ActionView
20
20
  entry_kvs[:File] = __FILE__
21
21
  entry_kvs[:LineNumber] = __LINE__
22
- rescue
22
+ rescue => e
23
+ TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
23
24
  end
24
25
 
25
26
  TraceView::API.profile(name, entry_kvs, TraceView::Config[:action_view][:collect_backtraces]) do
@@ -40,7 +41,8 @@ if defined?(ActionView::Base) && TraceView::Config[:action_view][:enabled]
40
41
  entry_kvs[:Module] = :ActionView
41
42
  entry_kvs[:File] = __FILE__
42
43
  entry_kvs[:LineNumber] = __LINE__
43
- rescue
44
+ rescue => e
45
+ TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
44
46
  end
45
47
 
46
48
  TraceView::API.profile(name, entry_kvs, TraceView::Config[:action_view][:collect_backtraces]) do
@@ -16,7 +16,8 @@ if defined?(ActionView::Base) && TraceView::Config[:action_view][:enabled]
16
16
  entry_kvs[:Module] = 'ActionView::Partials'
17
17
  entry_kvs[:File] = __FILE__
18
18
  entry_kvs[:LineNumber] = __LINE__
19
- rescue
19
+ rescue => e
20
+ TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
20
21
  end
21
22
 
22
23
  TraceView::API.profile(name, entry_kvs, TraceView::Config[:action_view][:collect_backtraces]) do
@@ -34,7 +35,8 @@ if defined?(ActionView::Base) && TraceView::Config[:action_view][:enabled]
34
35
  entry_kvs[:Module] = 'ActionView::Partials'
35
36
  entry_kvs[:File] = __FILE__
36
37
  entry_kvs[:LineNumber] = __LINE__
37
- rescue
38
+ rescue => e
39
+ TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
38
40
  end
39
41
 
40
42
  TraceView::API.profile(name, entry_kvs, TraceView::Config[:action_view][:collect_backtraces]) do
@@ -28,9 +28,9 @@ module TraceView
28
28
  config = ::Rails.application.config.database_configuration[::Rails.env]
29
29
  end
30
30
 
31
- opts[:Database] = config['database'] if config.key?('database')
32
- opts[:RemoteHost] = config['host'] if config.key?('host')
33
- opts[:Flavor] = config['adapter'] if config.key?('adapter')
31
+ opts[:Database] = config['database'] if config && config.key?('database')
32
+ opts[:RemoteHost] = config['host'] if config && config.key?('host')
33
+ opts[:Flavor] = config['adapter'] if config && config.key?('adapter')
34
34
  rescue StandardError => e
35
35
  TraceView.logger.debug "Exception raised capturing ActiveRecord KVs: #{e.inspect}"
36
36
  TraceView.logger.debug e.backtrace.join('\n')
@@ -85,7 +85,7 @@ if defined?(::Sinatra)
85
85
 
86
86
  # When in the gem TEST environment, we load this instrumentation regardless.
87
87
  # Otherwise, only when Padrino isn't around.
88
- unless defined?(::Padrino) and not (ENV.key?('TRACEVIEW_GEM_TEST'))
88
+ unless defined?(::Padrino) && !ENV.key?('TRACEVIEW_GEM_TEST')
89
89
  # Padrino has 'enhanced' routes and rendering so the Sinatra
90
90
  # instrumentation won't work anyways. Only load for pure Sinatra apps.
91
91
  ::TraceView::Util.send_include(::Sinatra::Base, ::TraceView::Sinatra::Base)
@@ -27,7 +27,7 @@ module TraceView
27
27
  report_kvs[:LineNumber] = __LINE__
28
28
  rescue StandardError => e
29
29
  ::TraceView.logger.debug e.message
30
- ::TraceView.logger.debug e.backtrace.join(", ")
30
+ ::TraceView.logger.debug e.backtrace.join(', ')
31
31
  end
32
32
 
33
33
  TraceView::API.profile(name, report_kvs, false) do