oneapm_rpm 1.2.0 → 1.2.1.rc

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 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: