oneapm_rpm 1.2.0 → 1.2.1.rc

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 9637faf70e8254363cc5ef872cff5be2107b0e18
4
- data.tar.gz: ce1569b659d17bb3cb59b050f5c764ad30a8b4ce
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZjYzNmI4ZDk2MWZkMTkzOTlmODYzNmYxMGFmMzU4MDI5NjJkMDhjMA==
5
+ data.tar.gz: !binary |-
6
+ YzQ0MGYyZjI2MGYxNzQ4ODQwYjdiZjNkYWE0ZjZiYjE0YmYwMzhhZQ==
5
7
  SHA512:
6
- metadata.gz: a082645eea917ba25880dabec86c54b7576b42d9b04c7479eada3af10cc4c0853154dc54376eb01eee36b0aa9732287ff1428d7e64244d70e82de5d258069305
7
- data.tar.gz: 7bd556b3e93f61b72485b36d6bd4a56489662738fc42b4878da3884814d7e26ad65f0f8ae71d429b5d603cdcb1be6b1543ea3d4ff23a5d01a1ff843b3eebee5c
8
+ metadata.gz: !binary |-
9
+ YTg3NmM1MWVhODgzODY0MWNkMzA5MDk0OTMzNzQ4YjY5YWViM2Y0ZmZiNGEy
10
+ ZGI3NTg1NDJkZDk4YTJkYmVkODZhZjQ2OGJlMzljNGFkNTVhNDQ2YjZhN2Q4
11
+ MDE0M2JhMmNhYWI5MTgwMzY0MzFiMjkxOGFiZTA0NDlmZDk2NjU=
12
+ data.tar.gz: !binary |-
13
+ YzYwZTk5OGNjNTMzZmI0ZWM0M2ZkNWQ1NzBjMjY2ZjdhYTI5NjNiMWIyODlh
14
+ NTgwYzZlZDA0ZGJlNjllNTc2Mzk1OTQ4NzlkODJmMWVmMzYxMWQ2Y2Q1ZTdm
15
+ YmMwN2E4MTI0Njk2Zjk0YzhhMWRmNzVlZWEwNGFjYzBmMDM3ZDY=
data/.gitignore CHANGED
@@ -28,3 +28,7 @@ artifacts/
28
28
  test/performance/script/log/
29
29
  /doc/
30
30
  /test/reports/*
31
+ .ruby-version
32
+ .ruby-gemset
33
+ **/database.yml
34
+ test/multiverse/suites/active_record/config/database.yml
data/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ # Change Log
2
+
3
+ ## [1.2.0] - 2015-07-01
4
+
5
+ ### Added
6
+
7
+ - developer mode
data/README.md CHANGED
@@ -1,3 +1,3 @@
1
1
  # OneApm Ruby Agent
2
2
 
3
- OneApm is a performance management system, developed by OneApm, Inc (http://www.oneapm.com).
3
+ OneApm is a performance management system, developed by OneApm, Inc (http://www.oneapm.com).
@@ -98,7 +98,7 @@ module OneApm
98
98
 
99
99
  OneApm::Manager.logger.debug "Server provided config: #{config_data.inspect}"
100
100
  server_config = OneApm::Configuration::ServerSource.new(config_data, OneApm::Manager.config)
101
- OneApm::Manager.config.replace_or_add_config(server_config)
101
+ OneApm::Manager.config.update_config(server_config)
102
102
  log_connection!(config_data) if @service
103
103
 
104
104
  @transaction_rules = OneApm::Support::RulesEngine.create_transaction_rules(config_data)
@@ -108,9 +108,8 @@ module OneApm
108
108
  metrics = metrics_for(request, response)
109
109
  scoped_metric = metrics.pop
110
110
 
111
- stats_engine.record_scoped_and_unscoped_metrics(
112
- state, scoped_metric, metrics, duration)
113
-
111
+ stats_engine.record_scoped_and_unscoped_metrics(state, scoped_metric, metrics, duration, nil, &cross_app_run_time_block(response, duration))
112
+
114
113
  # If we don't have segment, something failed during start_trace so
115
114
  # the current segment isn't the HTTP call it should have been.
116
115
  if segment
@@ -214,6 +213,7 @@ module OneApm
214
213
 
215
214
  if response && response_is_crossapp?( response )
216
215
  begin
216
+ metrics.delete_if{|m| m == "External/#{request.host}/all"}
217
217
  metrics.concat metrics_for_crossapp_response( request, response )
218
218
  rescue => err
219
219
  # Fall back to regular metrics if there's a problem with x-process metrics
@@ -331,6 +331,23 @@ module OneApm
331
331
  # This is here for when that inevitably comes back to haunt us.
332
332
  end
333
333
 
334
+ def cross_app_run_time_block response, res_time
335
+ run_time_block = nil
336
+ if response && response_is_crossapp?( response )
337
+ xp_id, txn_name, _q_time, run_time, _req_len, _ = extract_appdata( response )
338
+ run_time_block = Proc.new do |stats|
339
+ stats.call_count += 1
340
+ stats.total_call_time += res_time
341
+ stats.total_exclusive_time += run_time
342
+ stats.min_call_time = res_time
343
+ stats.max_call_time = res_time
344
+ stats.sum_of_squares += res_time**2
345
+ stats
346
+ end
347
+ end
348
+ run_time_block
349
+ end
350
+
334
351
  end
335
352
  end
336
353
  end
@@ -101,7 +101,11 @@ module OneApm
101
101
  end
102
102
 
103
103
  def browser_timing_loader
104
- html_safe_if_needed("\n<script type=\"text/javascript\" src=\"#{Manager.config[:js_agent_loader]}\"></script>")
104
+ if Manager.config[:'browser_monitoring.is_js_text']
105
+ html_safe_if_needed("\n<script type=\"text/javascript\">#{Manager.config[:js_agent_loader]}</script>")
106
+ else
107
+ html_safe_if_needed("\n<script type=\"text/javascript\" src=\"#{Manager.config[:js_agent_loader]}\"></script>")
108
+ end
105
109
  end
106
110
 
107
111
  def browser_timing_config(state)
@@ -30,15 +30,16 @@ module OneApm
30
30
  OneApm::Manager.config.register_callback(:'error_collector.enabled') do |config_enabled|
31
31
  OneApm::Manager.logger.debug "Errors will #{config_enabled ? '' : 'not '}be sent to the OneApm service."
32
32
  end
33
- OneApm::Manager.config.register_callback(:'error_collector.ignore_errors') do |ignore_errors|
34
- initialize_ignored_errors(ignore_errors)
33
+ OneApm::Manager.config.register_callback(:'error_collector.ignore_errors') do |client_config_errors, server_config_errors|
34
+ initialize_ignored_errors("#{client_config_errors},#{server_config_errors}")
35
35
  end
36
36
  end
37
37
 
38
38
  def initialize_ignored_errors(ignore_errors)
39
39
  @ignore.clear
40
40
  ignore_errors = ignore_errors.split(",") if ignore_errors.is_a? String
41
- ignore_errors.each { |error| error.strip! }
41
+ ignore_errors.map(&:strip!)
42
+ ignore_errors.uniq!
42
43
  ignore(ignore_errors)
43
44
  end
44
45
 
@@ -766,6 +766,12 @@ module OneApm
766
766
  :type => Boolean,
767
767
  :description => 'Enable or disable HTTPS instrumentation by JavaScript agent on HTTP pages.'
768
768
  },
769
+ :'browser_monitoring.is_js_text' => {
770
+ :default => false,
771
+ :public => true,
772
+ :type => Boolean,
773
+ :description => 'Enable or disable insert js agent as text'
774
+ },
769
775
  :js_agent_loader => {
770
776
  :default => '',
771
777
  :public => false,
@@ -1024,6 +1030,19 @@ module OneApm
1024
1030
  :public => true,
1025
1031
  :type => Boolean,
1026
1032
  :description => 'enable standalone mode of event_machine'
1033
+ },
1034
+ :'redis.ignore_commands' => {
1035
+ :default => [],
1036
+ :allow_nil => true,
1037
+ :public => true,
1038
+ :type => Array,
1039
+ :description => 'A list of redis commands that will be ignore.'
1040
+ },
1041
+ :disable_rails_middleware => {
1042
+ :default => true,
1043
+ :public => true,
1044
+ :type => Boolean,
1045
+ :description => 'Defines whether the agent will wrap middlewares which are installed Rails.'
1027
1046
  }
1028
1047
  }.freeze
1029
1048
  end
@@ -15,7 +15,7 @@ module OneApm
15
15
  end
16
16
  end
17
17
 
18
- if hash['browser_monitoring']
18
+ if hash['browser_monitoring'] && hash['browser_monitoring']['transform']
19
19
  hash['browser_monitoring']['auto_instrument'] = hash['browser_monitoring']['transform']
20
20
  end
21
21
 
@@ -23,9 +23,13 @@ module OneApm
23
23
  self[:web_transactions_apdex] = hash.delete('web_transactions_apdex')
24
24
  end
25
25
 
26
+ if hash['error_collector']
27
+ hash['error_collector']['ignore_errors.direction'] = :append
28
+ end
29
+
26
30
  dotted_hash = OneApm::Support::DottedHash.new(hash).to_hash
27
31
  apply_feature_gates(dotted_hash, existing_config)
28
-
32
+
29
33
  super(dotted_hash)
30
34
  end
31
35
 
@@ -86,11 +86,24 @@ module OneApm
86
86
  log_config(:remove, source)
87
87
  end
88
88
 
89
- def replace_or_add_config(source)
89
+ def replace_or_add_config source
90
+ configure(source) do
91
+ invoke_callbacks(:add, source)
92
+ :add
93
+ end
94
+ end
95
+
96
+ def update_config source
97
+ configure(source) do
98
+ _invoke_callbacks_(source)
99
+ :update
100
+ end
101
+ end
102
+
103
+ def configure source
90
104
  source.freeze
91
105
  was_finished = finished_configuring?
92
-
93
- invoke_callbacks(:add, source)
106
+ operation = yield
94
107
  case source
95
108
  when HighSecuritySource then @high_security_source = source
96
109
  when EnvironmentSource then @environment_source = source
@@ -101,10 +114,8 @@ module OneApm
101
114
  else
102
115
  OneApm::Manager.logger.warn("Invalid config format; config will be ignored: #{source}")
103
116
  end
104
-
105
117
  reset_cache
106
- log_config(:add, source)
107
-
118
+ log_config(operation, source)
108
119
  notify_finished_configuring if !was_finished && finished_configuring?
109
120
  end
110
121
 
@@ -165,22 +176,41 @@ module OneApm
165
176
  proc.call(@cache[key])
166
177
  end
167
178
 
168
- def invoke_callbacks(direction, source)
179
+ def _invoke_callbacks_ source
180
+ return unless source
181
+ @directions = directions(source)
182
+ source.keys.each do |key|
183
+ _callbacks_(@directions[key], source, key)
184
+ end
185
+ end
186
+
187
+ def invoke_callbacks direction, source
169
188
  return unless source
170
189
  source.keys.each do |key|
190
+ _callbacks_(direction, source, key)
191
+ end
192
+ end
171
193
 
172
- if @cache[key] != source[key]
173
- @callbacks[key].each do |proc|
174
- if direction == :add
175
- proc.call(source[key])
176
- else
177
- proc.call(@cache[key])
178
- end
194
+ def _callbacks_ direction, source, key
195
+ if @cache[key] != source[key]
196
+ @callbacks[key].each do |proc|
197
+ case direction
198
+ when :add then proc.call(source[key])
199
+ when :append then proc.call(@cache[key], source[key])
200
+ else proc.call(@cache[key])
179
201
  end
180
202
  end
181
203
  end
182
204
  end
183
205
 
206
+ def directions source
207
+ h = Hash.new{|h, k| h[k] = :add}
208
+ source.each do |key, value|
209
+ h[key] = source[:"#{key}.direction"].to_sym if source[:"#{key}.direction"]
210
+ end
211
+ h
212
+ end
213
+
184
214
  def notify_finished_configuring
185
215
  OneApm::Manager.agent.events.notify(:finished_configuring)
186
216
  end
@@ -137,7 +137,7 @@ module OneApm
137
137
 
138
138
  def dispatch_with_oneapm
139
139
  request_params = get_request_params
140
- filtered_params = OneApm::Support::ParameterFiltering::apply_filters(request.env, request_params || {})
140
+ filtered_params = OneApm::Support::ParameterFiltering.apply_filters(request.env, request_params || {})
141
141
 
142
142
  name = TransactionNamer.initial_transaction_name(request)
143
143
  perform_action_with_oneapm_trace(:category => :sinatra,
@@ -21,14 +21,14 @@ LibraryDetection.defer do
21
21
  # +raw_call_command+.
22
22
 
23
23
  call_method = ::Redis::Client.new.respond_to?(:call) ? :call : :raw_call_command
24
-
24
+
25
25
  def call_with_oneapm_trace(*args, &blk)
26
26
  method_name = args[0].is_a?(Array) ? args[0][0] : args[0]
27
+ filtered_command = filter method_name
27
28
  callback = proc do |result, metric, elapsed|
28
29
  _send_to_one_apm(args, elapsed)
29
30
  end
30
-
31
- OneApm::Agent::Datastore.wrap("Redis", method_name, nil, callback) do
31
+ OneApm::Agent::Datastore.wrap("Redis", filtered_command, nil, callback) do
32
32
  call_without_oneapm_trace(*args, &blk)
33
33
  end
34
34
  end
@@ -78,6 +78,16 @@ LibraryDetection.defer do
78
78
  end
79
79
  OneApm::Agent::Datastore.notice_statement(args.inspect, elapsed)
80
80
  end
81
+
82
+ def filter command
83
+ need_filtered = OneApm::Manager.config[:'redis.ignore_commands'].map(&:to_s).include?(command.to_s)
84
+ if need_filtered
85
+ OneApm::Manager.logger.debug "filter command: #{command}"
86
+ nil
87
+ else
88
+ command
89
+ end
90
+ end
81
91
  end
82
92
  end
83
93
  end
@@ -51,7 +51,6 @@ module OneApm::Rack
51
51
 
52
52
  def is_streaming?(env)
53
53
  return false unless defined?(ActionController::Live)
54
-
55
54
  env['action_controller.instance'].class.included_modules.include?(ActionController::Live)
56
55
  end
57
56
 
@@ -22,6 +22,11 @@ module OneApm
22
22
  prefix = OneApm::TransactionNamer.prefix_for_category(nil, @category)
23
23
  "#{prefix}#{self.class.name}/call"
24
24
  end
25
+
26
+ def middleware_ignore?
27
+ OneApm::Manager.config[:disable_rails_middleware]
28
+ end
29
+
25
30
  end
26
31
  end
27
32
  end
@@ -55,13 +55,15 @@ module OneApm::Rack
55
55
  first_middleware = note_transaction_started(env)
56
56
 
57
57
  state = OneApm::TransactionState.tl_get
58
-
59
58
  begin
60
- OneApm::Transaction.start(state, category, build_transaction_options(env, first_middleware))
61
- events.notify(:before_call, env) if first_middleware
59
+ options = build_transaction_options(env, first_middleware)
60
+ current_transaction = OneApm::Transaction.start(state, category, options)
62
61
 
62
+ events.notify(:before_call, env) if first_middleware
63
63
  result = (target == self) ? traced_call(env) : target.call(env)
64
64
 
65
+ current_transaction.ignore_frames << options[:transaction_name] if respond_to?(:middleware_ignore?) && middleware_ignore?
66
+
65
67
  capture_http_response_code(state, result)
66
68
  events.notify(:after_call, env, result) if first_middleware
67
69
 
@@ -39,7 +39,10 @@ module OneApm
39
39
  stack = state.traced_method_stack
40
40
  create_metrics = options.has_key?(:metric) ? options[:metric] : true
41
41
  frame = stack.pop_frame(state, expected_frame, first_name, t1, create_metrics)
42
- return unless create_metrics
42
+ unless create_metrics
43
+ OneApm::Manager.logger.log_once :debug, "Ignore trace frame: #{first_name}"
44
+ return
45
+ end
43
46
 
44
47
  duration = t1 - t0
45
48
  exclusive = duration - frame.children_time
@@ -15,8 +15,7 @@ module OneApm
15
15
  def start(state, category, options)
16
16
  category ||= :controller
17
17
  txn = state.current_transaction
18
-
19
- if txn
18
+ if txn
20
19
  txn.create_nested_frame(state, category, options)
21
20
  else
22
21
  txn = start_new_transaction(state, category, options)
@@ -30,7 +29,6 @@ module OneApm
30
29
 
31
30
  def stop(state, end_time=Time.now)
32
31
  txn = state.current_transaction
33
-
34
32
  if txn.nil?
35
33
  OneApm::Manager.logger.error(Transaction::FAILED_TO_STOP_MESSAGE)
36
34
  return
@@ -38,6 +36,9 @@ module OneApm
38
36
 
39
37
  nested_frame = txn.frame_stack.pop
40
38
 
39
+ options = Transaction::NESTED_TRACE_STOP_OPTIONS
40
+ options = Transaction::TRACE_IGNORE_OPTIONS if !txn.ignore_frames.empty? && txn.ignore_frames.include?(nested_frame.name)
41
+
41
42
  if txn.frame_stack.empty?
42
43
  txn.stop(state, end_time, nested_frame)
43
44
  state.reset
@@ -56,7 +57,7 @@ module OneApm
56
57
  nested_name,
57
58
  summary_metrics,
58
59
  nested_frame,
59
- Transaction::NESTED_TRACE_STOP_OPTIONS,
60
+ options,
60
61
  end_time.to_f)
61
62
  end
62
63
 
@@ -33,7 +33,9 @@ module OneApm
33
33
 
34
34
  TRACE_OPTIONS_SCOPED = {:metric => true, :scoped_metric => true}.freeze
35
35
  TRACE_OPTIONS_UNSCOPED = {:metric => true, :scoped_metric => false}.freeze
36
-
36
+
37
+ TRACE_IGNORE_OPTIONS = {:metric => false}.freeze
38
+
37
39
  UNKNOWN_METRIC = '(unknown)'.freeze
38
40
 
39
41
  FAILED_TO_STOP_MESSAGE = "Failed during Transaction.stop because there is no current transaction"
@@ -34,7 +34,8 @@ module OneApm
34
34
  :jruby_cpu_start,
35
35
  :process_cpu_start,
36
36
  :http_response_code,
37
- :request
37
+ :request,
38
+ :ignore_frames
38
39
 
39
40
  attr_reader :database_metric_name,
40
41
  :guid,
@@ -69,6 +70,7 @@ module OneApm
69
70
  @ignore_this_transaction = false
70
71
  @ignore_apdex = false
71
72
  @ignore_enduser = false
73
+ @ignore_frames = options[:ignore_frames] || []
72
74
  end
73
75
 
74
76
  def start(state)
@@ -96,6 +98,8 @@ module OneApm
96
98
  trace_options = TRACE_OPTIONS_UNSCOPED
97
99
  end
98
100
 
101
+ trace_options = TRACE_IGNORE_OPTIONS if !ignore_frames.empty? && ignore_frames.include?(outermost_frame.name)
102
+
99
103
  # These metrics are recorded here instead of in record_summary_metrics
100
104
  # in order to capture the exclusive time associated with the outer-most
101
105
  # TT node.
@@ -231,7 +235,6 @@ module OneApm
231
235
  if options[:filtered_params] && !options[:filtered_params].empty?
232
236
  @filtered_params = options[:filtered_params]
233
237
  end
234
-
235
238
  frame_stack.push OneApm::Support::MethodTracer::Helpers.trace_execution_scoped_header(state, Time.now.to_f)
236
239
  name_last_frame(options[:transaction_name])
237
240
 
@@ -5,9 +5,10 @@ module OneApm
5
5
 
6
6
  MAJOR = 1
7
7
  MINOR = 2
8
- TINY = 0
8
+ TINY = 1
9
+ TAG = 'rc'
9
10
 
10
- STRING = [MAJOR, MINOR, TINY].compact.join('.')
11
+ STRING = [MAJOR, MINOR, TINY, TAG].compact.join('.')
11
12
 
12
13
  end
13
14
  end
data/lib/oneapm_rpm.rb CHANGED
@@ -13,4 +13,4 @@ elsif defined?(::Goliath) && defined?(::Goliath::Application)
13
13
  require 'initializers/goliath'
14
14
  else
15
15
  require 'initializers/other'
16
- end
16
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oneapm_rpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1.rc
5
5
  platform: ruby
6
6
  authors:
7
7
  - oneapm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-01 00:00:00.000000000 Z
11
+ date: 2015-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -28,14 +28,14 @@ dependencies:
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '4.7'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '4.7'
41
41
  - !ruby/object:Gem::Dependency
@@ -56,14 +56,14 @@ dependencies:
56
56
  name: minitest-focus
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.1'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.1'
69
69
  - !ruby/object:Gem::Dependency
@@ -84,56 +84,56 @@ dependencies:
84
84
  name: mocha
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: 0.13.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.13.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rails
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ~>
102
102
  - !ruby/object:Gem::Version
103
103
  version: '3.2'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ~>
109
109
  - !ruby/object:Gem::Version
110
110
  version: '3.2'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: pry
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ~>
116
116
  - !ruby/object:Gem::Version
117
117
  version: 0.9.12
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ~>
123
123
  - !ruby/object:Gem::Version
124
124
  version: 0.9.12
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: hometown
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ~>
130
130
  - !ruby/object:Gem::Version
131
131
  version: 0.2.5
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ~>
137
137
  - !ruby/object:Gem::Version
138
138
  version: 0.2.5
139
139
  - !ruby/object:Gem::Dependency
@@ -212,8 +212,9 @@ executables: []
212
212
  extensions: []
213
213
  extra_rdoc_files: []
214
214
  files:
215
- - ".gitignore"
216
- - ".rubocop.yml"
215
+ - .gitignore
216
+ - .rubocop.yml
217
+ - CHANGELOG.md
217
218
  - Gemfile
218
219
  - Guardfile
219
220
  - LICENSE
@@ -490,12 +491,12 @@ require_paths:
490
491
  - lib
491
492
  required_ruby_version: !ruby/object:Gem::Requirement
492
493
  requirements:
493
- - - ">="
494
+ - - ! '>='
494
495
  - !ruby/object:Gem::Version
495
496
  version: 1.8.7
496
497
  required_rubygems_version: !ruby/object:Gem::Requirement
497
498
  requirements:
498
- - - ">="
499
+ - - ! '>='
499
500
  - !ruby/object:Gem::Version
500
501
  version: 1.3.5
501
502
  requirements: []
@@ -505,4 +506,3 @@ signing_key:
505
506
  specification_version: 4
506
507
  summary: OneApm Ruby Agent
507
508
  test_files: []
508
- has_rdoc: