traceview 3.3.3 → 3.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +18 -18
- data/CHANGELOG.md +13 -0
- data/README.md +3 -1
- data/Rakefile +18 -9
- data/gemfiles/delayed_job.gemfile +38 -0
- data/gemfiles/frameworks.gemfile +1 -2
- data/gemfiles/libraries.gemfile +1 -2
- data/gemfiles/rails23.gemfile +1 -2
- data/gemfiles/rails30.gemfile +4 -2
- data/gemfiles/rails31.gemfile +4 -2
- data/gemfiles/rails32.gemfile +4 -2
- data/gemfiles/rails40.gemfile +4 -2
- data/gemfiles/rails41.gemfile +4 -2
- data/gemfiles/rails42.gemfile +4 -2
- data/lib/traceview/api/layerinit.rb +3 -5
- data/lib/traceview/api/logging.rb +63 -50
- data/lib/traceview/api/memcache.rb +10 -9
- data/lib/traceview/api/profiling.rb +6 -7
- data/lib/traceview/api/util.rb +1 -1
- data/lib/traceview/base.rb +21 -7
- data/lib/traceview/config.rb +8 -4
- data/lib/traceview/frameworks/padrino.rb +2 -2
- data/lib/traceview/frameworks/rails.rb +26 -32
- data/lib/traceview/frameworks/rails/inst/action_controller.rb +3 -3
- data/lib/traceview/frameworks/rails/inst/action_view.rb +4 -2
- data/lib/traceview/frameworks/rails/inst/action_view_2x.rb +4 -2
- data/lib/traceview/frameworks/rails/inst/action_view_30.rb +4 -2
- data/lib/traceview/frameworks/rails/inst/connection_adapters/utils.rb +3 -3
- data/lib/traceview/frameworks/sinatra.rb +1 -1
- data/lib/traceview/frameworks/sinatra/templates.rb +1 -1
- data/lib/traceview/inst/dalli.rb +4 -5
- data/lib/traceview/inst/delayed_job.rb +92 -0
- data/lib/traceview/inst/em-http-request.rb +3 -0
- data/lib/traceview/inst/excon.rb +3 -3
- data/lib/traceview/inst/faraday.rb +4 -1
- data/lib/traceview/inst/mongo.rb +10 -5
- data/lib/traceview/inst/moped.rb +4 -4
- data/lib/traceview/inst/redis.rb +5 -7
- data/lib/traceview/inst/resque.rb +3 -3
- data/lib/traceview/inst/rest-client.rb +2 -2
- data/lib/traceview/inst/sidekiq-client.rb +3 -0
- data/lib/traceview/inst/sidekiq-worker.rb +3 -0
- data/lib/traceview/inst/twitter-cassandra.rb +8 -4
- data/lib/traceview/test.rb +30 -1
- data/lib/traceview/util.rb +7 -0
- data/lib/traceview/version.rb +2 -2
- data/test/frameworks/rails3x_test.rb +12 -2
- data/test/frameworks/rails4x_test.rb +12 -2
- data/test/instrumentation/curb_test.rb +2 -2
- data/test/instrumentation/dalli_test.rb +121 -118
- data/test/instrumentation/httpclient_test.rb +0 -1
- data/test/jobs/delayed_job/db_worker_job.rb +29 -0
- data/test/jobs/delayed_job/error_worker_job.rb +10 -0
- data/test/jobs/delayed_job/remote_call_worker_job.rb +20 -0
- data/test/minitest_helper.rb +8 -3
- data/test/models/widget.rb +19 -0
- data/test/queues/delayed_job-client_test.rb +95 -0
- data/test/queues/delayed_job-worker_test.rb +91 -0
- data/test/servers/delayed_job.rb +102 -0
- data/test/servers/rails3x_8140.rb +17 -1
- data/test/servers/rails4x_8140.rb +18 -1
- data/test/support/auto_tracing.rb +40 -0
- data/test/support/config_test.rb +5 -1
- data/traceview.gemspec +1 -0
- metadata +34 -6
- data/test/instrumentation/delayed_job-client_test.rb +0 -128
- data/test/instrumentation/delayed_job-worker_test.rb +0 -177
data/lib/traceview/inst/dalli.rb
CHANGED
@@ -50,7 +50,7 @@ module TraceView
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def get_multi_with_traceview(*keys)
|
53
|
-
return get_multi_without_traceview(keys) unless TraceView.tracing?
|
53
|
+
return get_multi_without_traceview(*keys) unless TraceView.tracing?
|
54
54
|
|
55
55
|
info_kvs = {}
|
56
56
|
|
@@ -60,13 +60,12 @@ module TraceView
|
|
60
60
|
if @servers.is_a?(Array) && !@servers.empty?
|
61
61
|
info_kvs[:RemoteHost] = @servers.join(", ")
|
62
62
|
end
|
63
|
-
rescue
|
64
|
-
TraceView.logger.debug "[traceview/debug]
|
65
|
-
TraceView.logger.debug e.backtrace
|
63
|
+
rescue => e
|
64
|
+
TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
|
66
65
|
end
|
67
66
|
|
68
67
|
TraceView::API.trace('memcache', { :KVOp => :get_multi }, :get_multi) do
|
69
|
-
values = get_multi_without_traceview(keys)
|
68
|
+
values = get_multi_without_traceview(*keys)
|
70
69
|
|
71
70
|
info_kvs[:KVHitCount] = values.length
|
72
71
|
info_kvs[:Backtrace] = TraceView::API.backtrace if TraceView::Config[:dalli][:collect_backtraces]
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# Copyright (c) 2015 AppNeta, Inc.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
if defined?(::Delayed)
|
5
|
+
module TraceView
|
6
|
+
module Inst
|
7
|
+
module DelayedJob
|
8
|
+
##
|
9
|
+
# ForkHandler
|
10
|
+
#
|
11
|
+
# Since delayed job doesn't offer a hook into `after_fork`, we alias the method
|
12
|
+
# here to do our magic after a fork happens.
|
13
|
+
#
|
14
|
+
module ForkHandler
|
15
|
+
def self.extended(klass)
|
16
|
+
::TraceView::Util.class_method_alias(klass, :after_fork, ::Delayed::Worker)
|
17
|
+
end
|
18
|
+
|
19
|
+
def after_fork_with_traceview
|
20
|
+
::TraceView.logger.info '[traceview/delayed_job] Detected fork. Restarting TraceView reporter.' if TraceView::Config[:verbose]
|
21
|
+
::TraceView::Reporter.restart unless ENV.key?('TRACEVIEW_GEM_TEST')
|
22
|
+
|
23
|
+
after_fork_without_traceview
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
##
|
28
|
+
# TraceView::Inst::DelayedJob::Plugin
|
29
|
+
#
|
30
|
+
# The TraceView DelayedJob plugin. Here we wrap `enqueue` and
|
31
|
+
# `perform` to capture the timing of the bits we're interested
|
32
|
+
# in.
|
33
|
+
#
|
34
|
+
class Plugin < Delayed::Plugin
|
35
|
+
callbacks do |lifecycle|
|
36
|
+
|
37
|
+
# enqueue
|
38
|
+
if TraceView::Config[:delayed_jobclient][:enabled]
|
39
|
+
lifecycle.around(:enqueue) do |job, &block|
|
40
|
+
begin
|
41
|
+
report_kvs = {}
|
42
|
+
report_kvs[:Spec] = :pushq
|
43
|
+
report_kvs[:Flavor] = :DelayedJob
|
44
|
+
report_kvs[:JobName] = job.name
|
45
|
+
report_kvs[:MsgID] = job.id
|
46
|
+
report_kvs[:Queue] = job.queue if job.queue
|
47
|
+
report_kvs['Backtrace'] = TV::API.backtrace if TV::Config[:delayed_jobclient][:collect_backtraces]
|
48
|
+
|
49
|
+
TraceView::API.trace('delayed_job-client', report_kvs) do
|
50
|
+
block.call(job)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# invoke_job
|
57
|
+
if TraceView::Config[:delayed_jobworker][:enabled]
|
58
|
+
lifecycle.around(:perform) do |worker, job, &block|
|
59
|
+
begin
|
60
|
+
report_kvs = {}
|
61
|
+
report_kvs[:Spec] = :job
|
62
|
+
report_kvs[:Flavor] = :DelayedJob
|
63
|
+
report_kvs[:JobName] = job.name
|
64
|
+
report_kvs[:MsgID] = job.id
|
65
|
+
report_kvs[:Queue] = job.queue if job.queue
|
66
|
+
report_kvs['Backtrace'] = TV::API.backtrace if TV::Config[:delayed_jobworker][:collect_backtraces]
|
67
|
+
|
68
|
+
# DelayedJob Specific KVs
|
69
|
+
report_kvs[:priority] = job.priority
|
70
|
+
report_kvs[:attempts] = job.attempts
|
71
|
+
report_kvs[:WorkerName] = job.locked_by
|
72
|
+
rescue => e
|
73
|
+
TV.logger.warn "[traceview/warning] inst/delayed_job.rb: #{e.message}"
|
74
|
+
end
|
75
|
+
|
76
|
+
result = TraceView::API.start_trace('delayed_job-worker', nil, report_kvs) do
|
77
|
+
block.call(worker, job)
|
78
|
+
TV::API.log_exception(nil, job.error) if job.error
|
79
|
+
end
|
80
|
+
result[0]
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
::TraceView.logger.info '[traceview/loading] Instrumenting delayed_job' if TraceView::Config[:verbose]
|
90
|
+
::TraceView::Util.send_extend(::Delayed::Worker, ::TraceView::Inst::DelayedJob::ForkHandler)
|
91
|
+
::Delayed::Worker.plugins << ::TraceView::Inst::DelayedJob::Plugin
|
92
|
+
end
|
data/lib/traceview/inst/excon.rb
CHANGED
@@ -64,7 +64,7 @@ module TraceView
|
|
64
64
|
# Avoid cross host tracing for blacklisted domains
|
65
65
|
blacklisted = TraceView::API.blacklisted?(@data[:hostname])
|
66
66
|
|
67
|
-
req_context = TraceView::Context.toString
|
67
|
+
req_context = TraceView::Context.toString
|
68
68
|
@data[:headers]['X-Trace'] = req_context unless blacklisted
|
69
69
|
|
70
70
|
kvs = traceview_collect(params)
|
@@ -84,8 +84,8 @@ module TraceView
|
|
84
84
|
kvs['HTTPStatus'] = response.status
|
85
85
|
|
86
86
|
# If we get a redirect, report the location header
|
87
|
-
if ((300..308).to_a.include? response.status.to_i) && response.headers.key?(
|
88
|
-
kvs[
|
87
|
+
if ((300..308).to_a.include? response.status.to_i) && response.headers.key?('Location')
|
88
|
+
kvs['Location'] = response.headers['Location']
|
89
89
|
end
|
90
90
|
|
91
91
|
if response_context && !blacklisted
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# Copyright (c) 2014 AppNeta, Inc.
|
2
|
+
# All rights reserved.
|
3
|
+
|
1
4
|
module TraceView
|
2
5
|
module Inst
|
3
6
|
module FaradayConnection
|
@@ -9,7 +12,7 @@ module TraceView
|
|
9
12
|
# Only send service KVs if we're not using the Net::HTTP adapter
|
10
13
|
# Otherwise, the Net::HTTP instrumentation will send the service KVs
|
11
14
|
handle_service = !@builder.handlers.include?(Faraday::Adapter::NetHttp) &&
|
12
|
-
|
15
|
+
!@builder.handlers.include?(Faraday::Adapter::Excon)
|
13
16
|
TraceView::API.log_entry('faraday')
|
14
17
|
|
15
18
|
result = run_request_without_traceview(method, url, body, headers, &block)
|
data/lib/traceview/inst/mongo.rb
CHANGED
@@ -56,7 +56,8 @@ if defined?(::Mongo) && TraceView::Config[:mongo][:enabled]
|
|
56
56
|
report_kvs[:Collection] = args[0] if m == :drop_collection
|
57
57
|
|
58
58
|
report_kvs[:Backtrace] = TraceView::API.backtrace if TraceView::Config[:mongo][:collect_backtraces]
|
59
|
-
rescue
|
59
|
+
rescue => e
|
60
|
+
TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
|
60
61
|
end
|
61
62
|
|
62
63
|
TraceView::API.trace('mongo', report_kvs) do
|
@@ -97,7 +98,8 @@ if defined?(::Mongo) && TraceView::Config[:mongo][:enabled]
|
|
97
98
|
end
|
98
99
|
report_kvs[:Limit] = @limit if @limit != 0
|
99
100
|
end
|
100
|
-
rescue
|
101
|
+
rescue => e
|
102
|
+
TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
|
101
103
|
end
|
102
104
|
|
103
105
|
TraceView::API.trace('mongo', report_kvs) do
|
@@ -162,7 +164,8 @@ if defined?(::Mongo) && TraceView::Config[:mongo][:enabled]
|
|
162
164
|
report_kvs[:Multi] = args[2][:multi] if args[2] && args[2].key?(:multi)
|
163
165
|
end
|
164
166
|
end
|
165
|
-
rescue
|
167
|
+
rescue => e
|
168
|
+
TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
|
166
169
|
end
|
167
170
|
|
168
171
|
TraceView::API.trace('mongo', report_kvs) do
|
@@ -200,7 +203,8 @@ if defined?(::Mongo) && TraceView::Config[:mongo][:enabled]
|
|
200
203
|
end
|
201
204
|
end
|
202
205
|
end
|
203
|
-
rescue
|
206
|
+
rescue => e
|
207
|
+
TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
|
204
208
|
end
|
205
209
|
|
206
210
|
TraceView::API.trace('mongo', report_kvs) do
|
@@ -221,7 +225,8 @@ if defined?(::Mongo) && TraceView::Config[:mongo][:enabled]
|
|
221
225
|
if [:create_index, :ensure_index, :drop_index].include?(m) && !args.empty?
|
222
226
|
report_kvs[:Index] = args[0].to_json
|
223
227
|
end
|
224
|
-
rescue
|
228
|
+
rescue => e
|
229
|
+
TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
|
225
230
|
end
|
226
231
|
|
227
232
|
TraceView::API.trace('mongo', report_kvs) do
|
data/lib/traceview/inst/moped.rb
CHANGED
@@ -58,7 +58,7 @@ if defined?(::Moped) && TraceView::Config[:moped][:enabled]
|
|
58
58
|
report_kvs = extract_trace_details(:map_reduce)
|
59
59
|
report_kvs[:Map_Function] = command[:map]
|
60
60
|
report_kvs[:Reduce_Function] = command[:reduce]
|
61
|
-
rescue
|
61
|
+
rescue => e
|
62
62
|
TraceView.logger.debug "[traceview/debug] Moped KV collection error: #{e.inspect}"
|
63
63
|
end
|
64
64
|
|
@@ -117,7 +117,7 @@ if defined?(::Moped) && TraceView::Config[:moped][:enabled]
|
|
117
117
|
end
|
118
118
|
|
119
119
|
def create_with_traceview(key, options = {})
|
120
|
-
return create_without_traceview(key, options
|
120
|
+
return create_without_traceview(key, options) unless TraceView.tracing?
|
121
121
|
|
122
122
|
begin
|
123
123
|
# We report :create_index here to be consistent
|
@@ -135,7 +135,7 @@ if defined?(::Moped) && TraceView::Config[:moped][:enabled]
|
|
135
135
|
end
|
136
136
|
|
137
137
|
def drop_with_traceview(key = nil)
|
138
|
-
return drop_without_traceview(key
|
138
|
+
return drop_without_traceview(key) unless TraceView.tracing?
|
139
139
|
|
140
140
|
begin
|
141
141
|
# We report :drop_indexes here to be consistent
|
@@ -451,7 +451,7 @@ if defined?(::Moped) && TraceView::Config[:moped][:enabled]
|
|
451
451
|
end
|
452
452
|
|
453
453
|
def aggregate_with_traceview(*pipeline)
|
454
|
-
return aggregate_without_traceview(pipeline) unless TraceView.tracing?
|
454
|
+
return aggregate_without_traceview(*pipeline) unless TraceView.tracing?
|
455
455
|
|
456
456
|
report_kvs = extract_trace_details(:aggregate)
|
457
457
|
report_kvs[:Query] = pipeline
|
data/lib/traceview/inst/redis.rb
CHANGED
@@ -88,9 +88,7 @@ module TraceView
|
|
88
88
|
|
89
89
|
if KV_COLLECT_MAP[op]
|
90
90
|
# Extract KVs from command for this op
|
91
|
-
KV_COLLECT_MAP[op].each { |k, v|
|
92
|
-
kvs[k] = command[v]
|
93
|
-
}
|
91
|
+
KV_COLLECT_MAP[op].each { |k, v| kvs[k] = command[v] }
|
94
92
|
else
|
95
93
|
# This case statement handle special cases not handled
|
96
94
|
# by KV_COLLECT_MAP
|
@@ -107,10 +105,10 @@ module TraceView
|
|
107
105
|
options = command[3..-1]
|
108
106
|
until (opts = options.shift(2)).empty?
|
109
107
|
case opts[0]
|
110
|
-
when
|
111
|
-
when
|
112
|
-
when
|
113
|
-
when
|
108
|
+
when 'EX' then; kvs[:ex] = opts[1]
|
109
|
+
when 'PX' then; kvs[:px] = opts[1]
|
110
|
+
when 'NX' then; kvs[:nx] = opts[1]
|
111
|
+
when 'XX' then; kvs[:xx] = opts[1]
|
114
112
|
end
|
115
113
|
end
|
116
114
|
end
|
@@ -32,11 +32,10 @@ module TraceView
|
|
32
32
|
report_kvs[:Args] = kv_args
|
33
33
|
end
|
34
34
|
end
|
35
|
-
|
36
35
|
report_kvs[:Backtrace] = TraceView::API.backtrace if TraceView::Config[:resqueclient][:collect_backtraces]
|
37
36
|
report_kvs[:Queue] = klass.instance_variable_get(:@queue)
|
38
37
|
rescue => e
|
39
|
-
TraceView.logger.debug "[traceview/
|
38
|
+
TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
|
40
39
|
end
|
41
40
|
|
42
41
|
report_kvs
|
@@ -114,7 +113,8 @@ module TraceView
|
|
114
113
|
end
|
115
114
|
|
116
115
|
report_kvs[:Backtrace] = TraceView::API.backtrace if TraceView::Config[:resqueworker][:collect_backtraces]
|
117
|
-
rescue
|
116
|
+
rescue => e
|
117
|
+
TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
|
118
118
|
end
|
119
119
|
|
120
120
|
TraceView::API.start_trace('resque-worker', nil, report_kvs) do
|
@@ -16,7 +16,7 @@ module TraceView
|
|
16
16
|
def execute_with_traceview & block
|
17
17
|
kvs = {}
|
18
18
|
kvs['Backtrace'] = TraceView::API.backtrace if TraceView::Config[:rest_client][:collect_backtraces]
|
19
|
-
TraceView::API.log_entry(
|
19
|
+
TraceView::API.log_entry('rest-client', kvs)
|
20
20
|
|
21
21
|
# The core rest-client call
|
22
22
|
execute_without_traceview(&block)
|
@@ -24,7 +24,7 @@ module TraceView
|
|
24
24
|
TraceView::API.log_exception('rest-client', e)
|
25
25
|
raise e
|
26
26
|
ensure
|
27
|
-
TraceView::API.log_exit(
|
27
|
+
TraceView::API.log_exit('rest-client')
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -36,7 +36,8 @@ module TraceView
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
39
|
-
rescue
|
39
|
+
rescue => e
|
40
|
+
TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
|
40
41
|
end
|
41
42
|
|
42
43
|
report_kvs
|
@@ -178,7 +179,8 @@ module TraceView
|
|
178
179
|
report_kvs[:Keyspace] = keyspace.to_s
|
179
180
|
report_kvs[:Column_name] = column_name.to_s
|
180
181
|
report_kvs[:Validation_class] = validation_class.to_s
|
181
|
-
rescue
|
182
|
+
rescue => e
|
183
|
+
TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
|
182
184
|
end
|
183
185
|
|
184
186
|
TraceView::API.trace('cassandra', report_kvs) do
|
@@ -193,7 +195,8 @@ module TraceView
|
|
193
195
|
begin
|
194
196
|
report_kvs[:Keyspace] = keyspace.to_s
|
195
197
|
report_kvs[:Column_name] = column_name.to_s
|
196
|
-
rescue
|
198
|
+
rescue => e
|
199
|
+
TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
|
197
200
|
end
|
198
201
|
|
199
202
|
TraceView::API.trace('cassandra', report_kvs) do
|
@@ -207,7 +210,8 @@ module TraceView
|
|
207
210
|
report_kvs = extract_trace_details(:add_column_family, nil, nil, nil)
|
208
211
|
begin
|
209
212
|
report_kvs[:Cf] = cf_def[:name] if cf_def.is_a?(Hash) && cf_def.key?(:name)
|
210
|
-
rescue
|
213
|
+
rescue => e
|
214
|
+
TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
|
211
215
|
end
|
212
216
|
|
213
217
|
TraceView::API.trace('cassandra', report_kvs) do
|
data/lib/traceview/test.rb
CHANGED
@@ -4,9 +4,15 @@
|
|
4
4
|
module TraceView
|
5
5
|
module Test
|
6
6
|
class << self
|
7
|
+
##
|
8
|
+
# load_extras
|
9
|
+
#
|
10
|
+
# This method simply loads all the extras needed to run
|
11
|
+
# tests such as models, jobs etc...
|
12
|
+
#
|
7
13
|
def load_extras
|
8
14
|
# If we're using the libraries gemfile (with sidekiq and resque)
|
9
|
-
if
|
15
|
+
if TV::Test.gemfile?(:libraries)
|
10
16
|
# Load all of the test workers
|
11
17
|
pattern = File.join(File.dirname(__FILE__), '../../test/jobs/**/', '*.rb')
|
12
18
|
Dir.glob(pattern) do |f|
|
@@ -15,6 +21,29 @@ module TraceView
|
|
15
21
|
end
|
16
22
|
end
|
17
23
|
end
|
24
|
+
|
25
|
+
##
|
26
|
+
# gemfile?
|
27
|
+
#
|
28
|
+
# Method used to determine under which gemfile we're running.
|
29
|
+
# Pass <tt>name</tt> as the gemfile name only (without the
|
30
|
+
# .gemfile extension)
|
31
|
+
#
|
32
|
+
# returns true or fase depending on result
|
33
|
+
#
|
34
|
+
def gemfile?(name)
|
35
|
+
File.basename(ENV['BUNDLE_GEMFILE']) == (name.to_s + '.gemfile')
|
36
|
+
end
|
37
|
+
|
38
|
+
##
|
39
|
+
# gemfile
|
40
|
+
#
|
41
|
+
# Used to determine under which gemfile we are running. This
|
42
|
+
# method will return the name of the active gemfile
|
43
|
+
#
|
44
|
+
def gemfile
|
45
|
+
File.basename(ENV['BUNDLE_GEMFILE']).split('.').first
|
46
|
+
end
|
18
47
|
end
|
19
48
|
end
|
20
49
|
end
|
data/lib/traceview/util.rb
CHANGED
@@ -218,6 +218,13 @@ module TraceView
|
|
218
218
|
platform_info['Ruby.Sidekiq.Version'] = "Sidekiq-#{::Sidekiq::VERSION}" if defined?(::Sidekiq::VERSION)
|
219
219
|
platform_info['Ruby.Typhoeus.Version'] = "Typhoeus-#{::Typhoeus::VERSION}" if defined?(::Typhoeus::VERSION)
|
220
220
|
|
221
|
+
if Gem.loaded_specs.key?('delayed_job')
|
222
|
+
# Oddly, DelayedJob doesn't have an embedded version number so we get it from the loaded
|
223
|
+
# gem specs.
|
224
|
+
version = Gem.loaded_specs['delayed_job'].version.to_s
|
225
|
+
platform_info['Ruby.DelayedJob.Version'] = "DelayedJob-#{version}"
|
226
|
+
end
|
227
|
+
|
221
228
|
# Special case since the Mongo 1.x driver doesn't embed the version number in the gem directly
|
222
229
|
if ::Gem.loaded_specs.key?('mongo')
|
223
230
|
platform_info['Ruby.Mongo.Version'] = "Mongo-#{::Gem.loaded_specs['mongo'].version}"
|