traceview 3.3.3 → 3.4.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 +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}"
|