appoptics_apm 4.3.0 → 4.3.1

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
  SHA256:
3
- metadata.gz: 170c3e8f35f9e439942788b3a801282c4a1deaee3090e8957bc76bdf9a209915
4
- data.tar.gz: 4e23ef886ee0f9358dfba882bc35e0258b229b0c5fa617055345216e85376999
3
+ metadata.gz: 460a1905104ca068b80627a06b31c7c7aeae3e1da872a97c261aa86e675ae7b2
4
+ data.tar.gz: 4810bf515e2af6c0f685061b34574ef0ba223e79eeae8b99d0f9697e3399b522
5
5
  SHA512:
6
- metadata.gz: 2fa70bacf8b44352826eb859bd687385a801fb1ea3c3289f8c7e79cff251ec6e05bbeb6510780af9b61a25376c171265a4308118da84c975a7a3d6a8ac803f3a
7
- data.tar.gz: 763038da0e769d87d450d356fb517db8e908d337c0c989a9ae91a278fe7d42f09355b9c06a2f394dd5a30c0ff513587aeb65db24fcc828b186baacc629700470
6
+ metadata.gz: 4e6fa6323f8b61c4bf2f294858c749585ba02c22d991bc042f9b3c9047f77b4df78027f575408c2cba917921d6bba9e809374ca8bad66da3ef0bfa4e3279003c
7
+ data.tar.gz: 4b6f2524b9ac853bf3e36f926409bea3966e6501340de454a471f60d6a3159d2df0e481ff2c9eb03f68c3b59d2ed4b270003b7576e5b81b17733adb020995582
@@ -15,6 +15,7 @@ rvm:
15
15
  - 2.4.5
16
16
  - 2.3.8
17
17
  # - jruby-9.0.5.0
18
+ - ruby-head
18
19
 
19
20
  gemfile:
20
21
  - gemfiles/libraries.gemfile
@@ -23,9 +24,7 @@ gemfile:
23
24
  - gemfiles/instrumentation_mocked_oldgems.gemfile
24
25
  - gemfiles/frameworks.gemfile
25
26
  - gemfiles/rails52.gemfile
26
- - gemfiles/rails51.gemfile
27
27
  - gemfiles/rails42.gemfile
28
- ## - gemfiles/rails32.gemfile # We currently are not supporting Rails 3.2
29
28
  - gemfiles/delayed_job.gemfile
30
29
  - gemfiles/noop.gemfile
31
30
 
@@ -35,6 +34,8 @@ matrix:
35
34
  env: DBTYPE=mysql
36
35
  - rvm: 2.4.5
37
36
  env: DBTYPE=mysql
37
+ - rvm: ruby-head
38
+ env: DBTYPE=mysql
38
39
 
39
40
  - gemfile: gemfiles/unit.gemfile
40
41
  env: DBTYPE=mysql
@@ -69,20 +70,8 @@ matrix:
69
70
  env: DBTYPE=mysql2
70
71
  - gemfile: gemfiles/delayed_job.gemfile
71
72
  env: DBTYPE=mysql2
72
-
73
- # Rails 3.2 is not compatible with Ruby >= 2.4
74
- # We currently are not supporting Rails 3.2
75
- # - rvm: 2.5.1
76
- # gemfile: gemfiles/rails32.gemfile
77
- # - rvm: 2.4.4
78
- # gemfile: gemfiles/rails32.gemfile
79
-
80
- # - rvm: jruby-9.0.5.0
81
- # gemfile: gemfiles/delayed_job.gemfile
82
-
83
- # Skip testing on JRuby until activerecord-jdbc supports Rails 5.0
84
- # - rvm: jruby-9.0.5.0
85
- # gemfile: gemfiles/rails50.gemfile
73
+ allow_failures:
74
+ - rvm: ruby-head
86
75
 
87
76
  # FIXME: Figure out if this is still an issue when reviewing cassandra test setup
88
77
  # Attempt Travis/Cassandra fix re: https://github.com/travis-ci/travis-ci/issues/1484
@@ -12,9 +12,18 @@ Gem::Specification.new do |s|
12
12
  s.email = %q{support@appoptics.com}
13
13
  s.homepage = %q{https://www.appoptics.com/}
14
14
  s.summary = %q{AppOptics APM performance instrumentation gem for Ruby}
15
- s.description = %q{The AppOpticsAPM gem provides performance instrumentation for MRI Ruby and related frameworks.}
16
-
17
- s.extra_rdoc_files = ["LICENSE"]
15
+ s.description = <<-EOF
16
+ The appoptics_apm gem provides automatic tracing and metrics for Ruby applications. Get started at appoptics.com. @AppOptics
17
+ EOF
18
+
19
+ s.metadata = {
20
+ 'changelog_uri' => 'https://github.com/appoptics/appoptics-apm-ruby/releases',
21
+ 'documentation_uri' => 'https://docs.appoptics.com/kb/apm_tracing/ruby/',
22
+ 'homepage_uri' => 'https://www.appoptics.com/',
23
+ 'source_code_uri' => 'https://github.com/appoptics/appoptics-apm-ruby',
24
+ }
25
+
26
+ s.extra_rdoc_files = ['LICENSE']
18
27
  s.files = `git ls-files`.split("\n").reject { |f| f.match(%r{^(test|gemfiles)/}) }
19
28
  s.files += ['ext/oboe_metal/src/oboe.h',
20
29
  'ext/oboe_metal/src/oboe.hpp',
@@ -19,6 +19,7 @@ module AppOpticsAPM
19
19
  def appoptics_collect(verb = nil)
20
20
  kvs = {}
21
21
 
22
+ kvs[:Spec] = 'rsc'
22
23
  kvs[:IsService] = 1
23
24
 
24
25
  # Conditionally log query args
@@ -13,6 +13,7 @@ module AppOpticsAPM
13
13
  report_kvs = {}
14
14
 
15
15
  begin
16
+ report_kvs[:Spec] = 'rsc'
16
17
  report_kvs[:IsService] = 1
17
18
  report_kvs[:RemoteURL] = @uri
18
19
  report_kvs[:HTTPMethod] = args[0]
@@ -13,20 +13,20 @@ module AppOpticsAPM
13
13
 
14
14
  def appoptics_collect(params)
15
15
  kvs = {}
16
+ kvs[:Spec] = 'rsc'
16
17
  kvs[:IsService] = 1
17
- kvs[:RemoteProtocol] = ::AppOpticsAPM::Util.upcase(@data[:scheme])
18
- kvs[:RemoteHost] = @data[:host]
19
18
 
20
19
  # Conditionally log query args
21
20
  if AppOpticsAPM::Config[:excon][:log_args] && @data[:query]
22
21
  if @data[:query].is_a?(Hash)
23
- kvs[:ServiceArg] = "#{@data[:path]}?#{URI.encode_www_form(@data[:query])}"
22
+ service_arg = "#{@data[:path]}?#{URI.encode_www_form(@data[:query])}"
24
23
  else
25
- kvs[:ServiceArg] = "#{@data[:path]}?#{@data[:query]}"
24
+ service_arg = "#{@data[:path]}?#{@data[:query]}"
26
25
  end
27
26
  else
28
- kvs[:ServiceArg] = @data[:path]
27
+ service_arg = @data[:path]
29
28
  end
29
+ kvs[:RemoteURL] = "#{@data[:scheme]}://#{@data[:host]}:#{@data[:port]}#{service_arg}"
30
30
 
31
31
  # In the case of HTTP pipelining, params could be an array of
32
32
  # request hashes.
@@ -35,7 +35,7 @@ module AppOpticsAPM
35
35
  params.each do |p|
36
36
  methods << ::AppOpticsAPM::Util.upcase(p[:method])
37
37
  end
38
- kvs[:HTTPMethods] = methods.join(', ')[0..1024]
38
+ kvs[:HTTPMethods] = methods.join(',')[0..1024]
39
39
  kvs[:Pipeline] = true
40
40
  else
41
41
  kvs[:HTTPMethod] = ::AppOpticsAPM::Util.upcase(params[:method])
@@ -53,8 +53,10 @@ module AppOpticsAPM
53
53
 
54
54
  def requests_with_appoptics(pipeline_params)
55
55
  responses = nil
56
- AppOpticsAPM::API.trace(:excon, appoptics_collect(pipeline_params)) do
56
+ kvs = appoptics_collect(pipeline_params)
57
+ AppOpticsAPM::API.trace(:excon, kvs) do
57
58
  responses = requests_without_appoptics(pipeline_params)
59
+ kvs[:HTTPStatuses] = responses.map { |r| r.status }.join(',')
58
60
  end
59
61
  responses
60
62
  end
@@ -10,59 +10,52 @@ module AppOpticsAPM
10
10
 
11
11
  def run_request_with_appoptics(method, url, body, headers, &block)
12
12
  blacklisted = url_blacklisted?
13
+ remote_call = remote_call?
14
+
13
15
  unless AppOpticsAPM.tracing?
14
- xtrace = AppOpticsAPM::Context.toString
15
- @headers['X-Trace'] = xtrace if AppOpticsAPM::XTrace.valid?(xtrace) && !blacklisted
16
+ if remote_call && !blacklisted
17
+ xtrace = AppOpticsAPM::Context.toString
18
+ @headers['X-Trace'] = xtrace if AppOpticsAPM::XTrace.valid?(xtrace)
19
+ end
16
20
  return run_request_without_appoptics(method, url, body, headers, &block)
17
21
  end
18
22
 
19
23
  begin
20
24
  AppOpticsAPM::API.log_entry(:faraday)
25
+ xtrace = nil
26
+ if remote_call && !blacklisted
27
+ xtrace = AppOpticsAPM::Context.toString
28
+ @headers['X-Trace'] = xtrace if AppOpticsAPM::XTrace.valid?(xtrace)
29
+ end
21
30
 
22
- xtrace = AppOpticsAPM::Context.toString
23
- @headers['X-Trace'] = xtrace if AppOpticsAPM::XTrace.valid?(xtrace) && !blacklisted
24
31
  result = run_request_without_appoptics(method, url, body, headers, &block)
25
32
 
33
+ # Re-attach edge unless it's blacklisted
34
+ # or if we don't have a valid X-Trace header
35
+ if remote_call && !blacklisted
36
+ xtrace_new = result.headers['X-Trace']
37
+ AppOpticsAPM::XTrace.continue_service_context(xtrace, xtrace_new)
38
+ end
26
39
  kvs = {}
27
40
  kvs[:Middleware] = @builder.handlers
28
41
  kvs[:Backtrace] = AppOpticsAPM::API.backtrace if AppOpticsAPM::Config[:faraday][:collect_backtraces]
29
42
 
30
- # Only send service KVs if we're not using the Net::HTTP adapter
31
- # Otherwise, the Net::HTTP instrumentation will send the service KVs
32
- handle_service = !@builder.handlers.include?(Faraday::Adapter::NetHttp) &&
33
- !@builder.handlers.include?(Faraday::Adapter::Excon)
34
- if handle_service
35
- context = AppOpticsAPM::Context.toString
36
- task_id = AppOpticsAPM::XTrace.task_id(context)
37
-
38
- # Avoid cross host tracing for blacklisted domains
39
- # Conditionally add the X-Trace header to the outgoing request
40
- @headers['X-Trace'] = context unless blacklisted
41
-
42
- kvs[:IsService] = 1
43
- kvs[:RemoteProtocol] = (@url_prefix.scheme == 'https') ? 'HTTPS' : 'HTTP'
44
- kvs[:RemoteHost] = @url_prefix.host
45
- kvs[:RemotePort] = @url_prefix.port
46
- kvs[:ServiceArg] = url
47
- kvs[:HTTPMethod] = method
48
- kvs[:HTTPStatus] = result.status
49
- kvs[:Blacklisted] = true if blacklisted
50
-
51
- # Re-attach net::http edge unless it's blacklisted or if we don't have a
52
- # valid X-Trace header
43
+ # Only send service KVs if we're not using an adapter
44
+ # Otherwise, the adapter instrumentation will send the service KVs
45
+ if remote_call
46
+ kvs.merge!(rsc_kvs(url, method, result))
53
47
  unless blacklisted
54
- xtrace = result.headers['X-Trace']
55
- AppOpticsAPM::XTrace.continue_service_context(context, xtrace)
48
+ xtrace_new = result.headers['X-Trace']
49
+ AppOpticsAPM::XTrace.continue_service_context(xtrace, xtrace_new)
56
50
  end
57
51
  end
58
52
 
59
- AppOpticsAPM::API.log(:faraday, :info, kvs)
60
53
  result
61
54
  rescue => e
62
55
  AppOpticsAPM::API.log_exception(:faraday, e)
63
56
  raise e
64
57
  ensure
65
- AppOpticsAPM::API.log_exit(:faraday)
58
+ AppOpticsAPM::API.log_exit(:faraday, kvs)
66
59
  end
67
60
  end
68
61
 
@@ -72,6 +65,23 @@ module AppOpticsAPM
72
65
  url = @url_prefix ? @url_prefix.to_s : @host
73
66
  AppOpticsAPM::API.blacklisted?(url)
74
67
  end
68
+
69
+ # This is only considered a remote service call if the middleware/adapter is not instrumented
70
+ def remote_call?
71
+ (@builder.handlers.map(&:name) & APPOPTICS_INSTR_ADAPTERS).count == 0
72
+ end
73
+
74
+ def rsc_kvs(url, method, result)
75
+ kvs = { :Spec => 'rsc',
76
+ :IsService => 1,
77
+ :HTTPMethod => method.upcase,
78
+ :HTTPStatus => result.status, }
79
+ kvs[:Blacklisted] = true if url_blacklisted?
80
+ kvs[:RemoteURL] = result.to_hash[:url].to_s
81
+ kvs[:RemoteURL].split('?').first unless AppOpticsAPM::Config[:faraday][:log_args]
82
+
83
+ kvs
84
+ end
75
85
  end
76
86
  end
77
87
  end
@@ -80,5 +90,7 @@ if AppOpticsAPM::Config[:faraday][:enabled]
80
90
  if defined?(::Faraday)
81
91
  AppOpticsAPM.logger.info '[appoptics_apm/loading] Instrumenting faraday' if AppOpticsAPM::Config[:verbose]
82
92
  ::AppOpticsAPM::Util.send_include(::Faraday::Connection, ::AppOpticsAPM::Inst::FaradayConnection)
93
+ APPOPTICS_INSTR_ADAPTERS = ["Faraday::Adapter::NetHttp", "Faraday::Adapter::Excon", "Faraday::Adapter::Typhoeus"]
94
+ APPOPTICS_INSTR_ADAPTERS << "Faraday::Adapter::HTTPClient" if defined?Faraday::Adapter::HTTPClient
83
95
  end
84
96
  end
@@ -38,7 +38,7 @@ module AppOpticsAPM
38
38
  def server_streamer_with_appoptics(req, metadata: {}, &blk)
39
39
  @tags = grpc_tags('SERVER_STREAMING', metadata[:method] || metadata_to_send[:method])
40
40
  AppOpticsAPM::API.log_entry('grpc_client', @tags)
41
- metadata['x-trace'] = AppOpticsAPM::Context.toString
41
+ metadata['x-trace'] = AppOpticsAPM::Context.toString if AppOpticsAPM::Context.isValid
42
42
  AppOpticsAPM::SDK.set_transaction_name(metadata[:method]) if AppOpticsAPM.transaction_name.nil?
43
43
 
44
44
  patch_receive_and_check_status # need to patch this so that log_exit can be called after the enum is consumed
@@ -58,7 +58,7 @@ module AppOpticsAPM
58
58
  def bidi_streamer_with_appoptics(req, metadata: {}, &blk)
59
59
  @tags = grpc_tags('BIDI_STREAMING', metadata[:method] || metadata_to_send[:method])
60
60
  AppOpticsAPM::API.log_entry('grpc_client', @tags)
61
- metadata['x-trace'] = AppOpticsAPM::Context.toString
61
+ metadata['x-trace'] = AppOpticsAPM::Context.toString if AppOpticsAPM::Context.isValid
62
62
  AppOpticsAPM::SDK.set_transaction_name(metadata[:method]) if AppOpticsAPM.transaction_name.nil?
63
63
 
64
64
  patch_set_input_stream_done
@@ -79,7 +79,7 @@ module AppOpticsAPM
79
79
  def unary_response(req, type: , metadata: , without:)
80
80
  tags = grpc_tags(type, metadata[:method] || metadata_to_send[:method])
81
81
  AppOpticsAPM::SDK.trace('grpc_client', tags) do
82
- metadata['x-trace'] = AppOpticsAPM::Context.toString
82
+ metadata['x-trace'] = AppOpticsAPM::Context.toString if AppOpticsAPM::Context.isValid
83
83
  AppOpticsAPM::SDK.set_transaction_name(metadata[:method]) if AppOpticsAPM.transaction_name.nil?
84
84
  begin
85
85
  send(without, req, metadata: metadata)
@@ -117,9 +117,11 @@ module AppOpticsAPM
117
117
  end
118
118
 
119
119
  def context_from_incoming
120
- xtrace ||= @call.trailing_metadata['x-trace'] if @call.trailing_metadata && @call.trailing_metadata['x-trace']
121
- xtrace ||= @call.metadata['x-trace'] if @call.metadata && @call.metadata['x-trace']
122
- AppOpticsAPM::Context.fromString(xtrace) if xtrace
120
+ if AppOpticsAPM::Context.isValid
121
+ xtrace ||= @call.trailing_metadata['x-trace'] if @call.trailing_metadata && @call.trailing_metadata['x-trace']
122
+ xtrace ||= @call.metadata['x-trace'] if @call.metadata && @call.metadata['x-trace']
123
+ AppOpticsAPM::Context.fromString(xtrace) if xtrace
124
+ end
123
125
  end
124
126
 
125
127
  def exit_tags(tags)
@@ -21,26 +21,19 @@ if AppOpticsAPM::Config[:nethttp][:enabled]
21
21
  return request_without_appoptics(*args, &block)
22
22
  end
23
23
 
24
- AppOpticsAPM::API.trace(:'net-http') do
25
- opts = {}
24
+ opts = {}
25
+ AppOpticsAPM::API.trace(:'net-http', opts) do
26
26
  context = AppOpticsAPM::Context.toString
27
- task_id = AppOpticsAPM::XTrace.task_id(context)
27
+ # task_id = AppOpticsAPM::XTrace.task_id(context)
28
28
 
29
29
  # Collect KVs to report in the info event
30
- if args.length && args[0]
31
- req = args[0]
30
+ if args.respond_to?(:first) && args.first
31
+ req = args.first
32
32
 
33
+ opts[:Spec] = 'rsc'
33
34
  opts[:IsService] = 1
34
- opts[:RemoteProtocol] = use_ssl? ? :HTTPS : :HTTP
35
- opts[:RemoteHost] = addr_port
36
-
37
- # Conditionally log query params
38
- if AppOpticsAPM::Config[:nethttp][:log_args]
39
- opts[:ServiceArg] = req.path
40
- else
41
- opts[:ServiceArg] = req.path.split('?').first
42
- end
43
-
35
+ opts[:RemoteURL] = "#{use_ssl? ? 'https' : 'http'}://#{addr_port}"
36
+ opts[:RemoteURL] << (AppOpticsAPM::Config[:nethttp][:log_args] ? req.path : req.path.split('?').first)
44
37
  opts[:HTTPMethod] = req.method
45
38
  opts[:Blacklisted] = true if blacklisted
46
39
  opts[:Backtrace] = AppOpticsAPM::API.backtrace if AppOpticsAPM::Config[:nethttp][:collect_backtraces]
@@ -68,9 +61,6 @@ if AppOpticsAPM::Config[:nethttp][:enabled]
68
61
  end
69
62
 
70
63
  next resp
71
- ensure
72
- # Log the info event with the KVs in opts
73
- AppOpticsAPM::API.log(:'net-http', :info, opts)
74
64
  end
75
65
  end
76
66
  end
@@ -12,6 +12,7 @@ module AppOpticsAPM
12
12
 
13
13
  def appoptics_collect(method, uri, query = nil)
14
14
  kvs = {}
15
+ kvs[:Spec] = 'rsc'
15
16
  kvs[:IsService] = 1
16
17
 
17
18
  # Conditionally log URL query params
@@ -27,9 +28,6 @@ module AppOpticsAPM
27
28
  kvs[:RemoteURL] = uri.to_s.split('?').first
28
29
  end
29
30
 
30
- kvs[:RemoteProtocol] = uri.scheme.upcase
31
- kvs[:RemoteHost] = "#{uri.host}:#{uri.port}"
32
- kvs[:ServiceArg] = "/?#{uri.query}"
33
31
  kvs[:HTTPMethod] = ::AppOpticsAPM::Util.upcase(method)
34
32
  kvs[:Backtrace] = AppOpticsAPM::API.backtrace if AppOpticsAPM::Config[:httpclient][:collect_backtraces]
35
33
  kvs
@@ -25,45 +25,39 @@ module AppOpticsAPM
25
25
  context = AppOpticsAPM::Context.toString
26
26
  options[:headers]['X-Trace'] = context unless blacklisted
27
27
 
28
+ kvs = {}
29
+ kvs[:Spec] = 'rsc'
30
+ kvs[:IsService] = 1
31
+ kvs[:HTTPMethod] = ::AppOpticsAPM::Util.upcase(options[:method])
32
+
28
33
  response = run_without_appoptics
29
34
 
35
+ # Re-attach edge unless it's blacklisted
36
+ # or if we don't have a valid X-Trace header
37
+ unless blacklisted
38
+ xtrace = response.headers['X-Trace']
39
+ AppOpticsAPM::XTrace.continue_service_context(context, xtrace)
40
+ end
41
+
30
42
  if response.code == 0
31
43
  exception = TyphoeusError.new(response.return_message)
32
44
  exception.set_backtrace(AppOpticsAPM::API.backtrace)
33
45
  AppOpticsAPM::API.log_exception(:typhoeus, exception)
34
46
  end
35
47
 
36
- kvs = {}
37
- kvs[:IsService] = 1
38
48
  kvs[:HTTPStatus] = response.code
39
49
  kvs[:Backtrace] = AppOpticsAPM::API.backtrace if AppOpticsAPM::Config[:typhoeus][:collect_backtraces]
40
-
41
- uri = URI(response.effective_url)
42
-
43
50
  # Conditionally log query params
44
- if AppOpticsAPM::Config[:typhoeus][:log_args]
45
- kvs[:RemoteURL] = uri.to_s
46
- else
47
- kvs[:RemoteURL] = uri.to_s.split('?').first
48
- end
49
-
50
- kvs[:HTTPMethod] = ::AppOpticsAPM::Util.upcase(options[:method])
51
+ uri = URI(response.effective_url)
52
+ kvs[:RemoteURL] = AppOpticsAPM::Config[:typhoeus][:log_args] ? uri.to_s : uri.to_s.split('?').first
51
53
  kvs[:Blacklisted] = true if blacklisted
52
54
 
53
- # Re-attach net::http edge unless it's blacklisted or if we don't have a
54
- # valid X-Trace header
55
- unless blacklisted
56
- xtrace = response.headers['X-Trace']
57
- AppOpticsAPM::XTrace.continue_service_context(context, xtrace)
58
- end
59
-
60
- AppOpticsAPM::API.log_info(:typhoeus, kvs)
61
55
  response
62
56
  rescue => e
63
57
  AppOpticsAPM::API.log_exception(:typhoeus, e)
64
58
  raise e
65
59
  ensure
66
- AppOpticsAPM::API.log_exit(:typhoeus)
60
+ AppOpticsAPM::API.log_exit(:typhoeus, kvs)
67
61
  end
68
62
  end
69
63
  end
@@ -178,7 +178,8 @@ module AppOpticsAPM
178
178
  return result
179
179
  end
180
180
 
181
- transaction_name_from_opts(opts)
181
+ # :TransactionName and 'TransactionName' need to be removed from opts
182
+ AppOpticsAPM.transaction_name = opts.delete('TransactionName') || opts.delete(:TransactionName)
182
183
 
183
184
  AppOpticsAPM::API.log_start(span, xtrace, opts)
184
185
  # AppOpticsAPM::Event.startTrace creates an Event without an Edge
@@ -293,6 +294,7 @@ module AppOpticsAPM
293
294
  # end
294
295
  #
295
296
  def appoptics_ready?(wait_milliseconds = 3000)
297
+ return false unless AppOpticsAPM.loaded
296
298
  # These codes are returned by isReady:
297
299
  # OBOE_SERVER_RESPONSE_UNKNOWN 0
298
300
  # OBOE_SERVER_RESPONSE_OK 1
@@ -302,21 +304,6 @@ module AppOpticsAPM
302
304
  # OBOE_SERVER_RESPONSE_CONNECT_ERROR 5
303
305
  AppopticsAPM::Context.isReady(wait_milliseconds) == 1
304
306
  end
305
-
306
- private
307
- # private method
308
- #
309
- # This should only be called at the beginning of a transaction,
310
- # when AppOpticsAPM.transaction_name needs to be set to nil
311
- # or whatever is provided in the opts
312
- def transaction_name_from_opts(opts)
313
- # :TransactionName and 'TransactionName' need to be removed from opts
314
- # :TransactionName should only be sent after it is set by send_metrics
315
- transaction_name = opts.delete('TransactionName')
316
- transaction_name = opts.delete(:TransactionName) || transaction_name
317
-
318
- AppOpticsAPM.transaction_name = transaction_name
319
- end
320
307
  end
321
308
 
322
309
  extend Tracing
@@ -8,7 +8,7 @@ module AppOpticsAPM
8
8
  module Version
9
9
  MAJOR = 4
10
10
  MINOR = 3
11
- PATCH = 0
11
+ PATCH = 1
12
12
 
13
13
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
14
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appoptics_apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.0
4
+ version: 4.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maia Engeli
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-10-29 00:00:00.000000000 Z
13
+ date: 2018-11-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json
@@ -116,8 +116,8 @@ dependencies:
116
116
  - - ">="
117
117
  - !ruby/object:Gem::Version
118
118
  version: 1.5.0
119
- description: The AppOpticsAPM gem provides performance instrumentation for MRI Ruby
120
- and related frameworks.
119
+ description: " The appoptics_apm gem provides automatic tracing and metrics for
120
+ Ruby applications. Get started at appoptics.com. @AppOptics\n"
121
121
  email: support@appoptics.com
122
122
  executables:
123
123
  - appoptics_apm_config
@@ -235,7 +235,11 @@ files:
235
235
  homepage: https://www.appoptics.com/
236
236
  licenses:
237
237
  - Librato Open License, Version 1.0
238
- metadata: {}
238
+ metadata:
239
+ changelog_uri: https://github.com/appoptics/appoptics-apm-ruby/releases
240
+ documentation_uri: https://docs.appoptics.com/kb/apm_tracing/ruby/
241
+ homepage_uri: https://www.appoptics.com/
242
+ source_code_uri: https://github.com/appoptics/appoptics-apm-ruby
239
243
  post_install_message:
240
244
  rdoc_options: []
241
245
  require_paths: