appmap 0.102.2 → 0.103.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/appmap/rspec.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../appmap'
4
- require_relative './util'
5
- require_relative './detect_enabled'
6
- require 'set'
7
- require 'fileutils'
3
+ require_relative "../appmap"
4
+ require_relative "util"
5
+ require_relative "detect_enabled"
6
+ require "set"
7
+ require "fileutils"
8
8
 
9
9
  module AppMap
10
10
  module RSpec
11
- APPMAP_OUTPUT_DIR = 'tmp/appmap/rspec'
12
- LOG = (ENV['APPMAP_DEBUG'] == 'true' || ENV['DEBUG'] == 'true')
11
+ APPMAP_OUTPUT_DIR = File.join(AppMap.output_dir, "rspec")
12
+ LOG = (ENV["APPMAP_DEBUG"] == "true" || ENV["DEBUG"] == "true")
13
13
 
14
14
  def self.metadata
15
15
  AppMap.detect_metadata
@@ -52,7 +52,7 @@ module AppMap
52
52
  end
53
53
 
54
54
  def description
55
- description? ? description_args.join(' ') : nil
55
+ description? ? description_args.join(" ") : nil
56
56
  end
57
57
 
58
58
  def parent
@@ -69,7 +69,7 @@ module AppMap
69
69
  example_group.parent_groups.first
70
70
  end
71
71
 
72
- example_group_parent == example_group ? nil : ScopeExampleGroup.new(example_group_parent)
72
+ (example_group_parent == example_group) ? nil : ScopeExampleGroup.new(example_group_parent)
73
73
  end
74
74
  end
75
75
 
@@ -83,7 +83,7 @@ module AppMap
83
83
  # This is the ugliest thing ever but I don't want to lose it.
84
84
  # All the WebDriver calls are getting app-mapped and it's really unclear
85
85
  # what they are.
86
- page.driver.options[:http_client].instance_variable_get('@server_url').port
86
+ page.driver.options[:http_client].instance_variable_get(:@server_url).port
87
87
  end
88
88
 
89
89
  warn "Starting recording of example #{example}@#{source_location}" if AppMap::RSpec::LOG
@@ -92,14 +92,14 @@ module AppMap
92
92
  end
93
93
 
94
94
  def source_location
95
- result = example.location_rerun_argument.split(':')[0]
96
- result = result[2..-1] if result.index('./') == 0
95
+ result = example.location_rerun_argument.split(":")[0]
96
+ result = result[2..-1] if result.index("./") == 0
97
97
  result
98
98
  end
99
99
 
100
100
  def finish(failure, exception)
101
101
  failed = true if failure || exception
102
- warn "Finishing recording of #{failed ? 'failed ' : ''} example #{example}" if AppMap::RSpec::LOG
102
+ warn "Finishing recording of #{failed ? "failed " : ""} example #{example}" if AppMap::RSpec::LOG
103
103
  warn "Exception: #{exception}" if exception && AppMap::RSpec::LOG
104
104
 
105
105
  if failed
@@ -130,21 +130,21 @@ module AppMap
130
130
  description.reverse!
131
131
 
132
132
  normalize = lambda do |desc|
133
- desc.gsub('it should behave like', '')
134
- .gsub(/Controller$/, '')
135
- .gsub(/\s+/, ' ')
136
- .strip
133
+ desc.gsub("it should behave like", "")
134
+ .gsub(/Controller$/, "")
135
+ .gsub(/\s+/, " ")
136
+ .strip
137
137
  end
138
138
 
139
- full_description = normalize.call(description.join(' '))
139
+ full_description = normalize.call(description.join(" "))
140
140
 
141
141
  AppMap::RSpec.save name: full_description,
142
- class_map: class_map,
143
- source_location: source_location,
144
- test_status: exception ? 'failed' : 'succeeded',
145
- test_failure: test_failure,
146
- exception: exception,
147
- events: events
142
+ class_map: class_map,
143
+ source_location: source_location,
144
+ test_status: exception ? "failed" : "succeeded",
145
+ test_failure: test_failure,
146
+ exception: exception,
147
+ events: events
148
148
  end
149
149
  end
150
150
 
@@ -169,10 +169,10 @@ module AppMap
169
169
  # The example is empty except for assertions. So RSwag has its own recorder, and RSpec
170
170
  # recording is disabled so it won't clobber the AppMap with empty data.
171
171
  recording = if example.metadata[:appmap] == false || example.metadata[:rswag]
172
- :disabled
173
- else
174
- Recording.new(example)
175
- end
172
+ :disabled
173
+ else
174
+ Recording.new(example)
175
+ end
176
176
 
177
177
  @recordings_by_example[example] = recording
178
178
  end
@@ -185,7 +185,7 @@ module AppMap
185
185
  end
186
186
 
187
187
  def config
188
- @config or raise 'AppMap is not configured'
188
+ @config or raise "AppMap is not configured"
189
189
  end
190
190
 
191
191
  def add_event_methods(event_methods)
@@ -193,20 +193,20 @@ module AppMap
193
193
  end
194
194
 
195
195
  def save(name:, class_map:, source_location:, test_status:, test_failure:, exception:, events:, frameworks: [],
196
- recorder: nil)
196
+ recorder: nil)
197
197
  metadata = AppMap::RSpec.metadata.tap do |m|
198
198
  m[:name] = name
199
199
  m[:source_location] = source_location
200
200
  m[:app] = AppMap.configuration.name
201
201
  m[:frameworks] ||= []
202
202
  m[:frameworks] << {
203
- name: 'rspec',
204
- version: Gem.loaded_specs['rspec-core']&.version&.to_s
203
+ name: "rspec",
204
+ version: Gem.loaded_specs["rspec-core"]&.version&.to_s
205
205
  }
206
206
  m[:frameworks] += frameworks
207
207
  m[:recorder] = recorder || {
208
- name: 'rspec',
209
- type: 'tests'
208
+ name: "rspec",
209
+ type: "tests"
210
210
  }
211
211
  m[:test_status] = test_status
212
212
  m[:test_failure] = test_failure if test_failure
@@ -242,9 +242,9 @@ module AppMap
242
242
  end
243
243
 
244
244
  if AppMap::RSpec.enabled?
245
- require 'active_support/inflector/transliterate'
246
- require 'rspec/core'
247
- require 'rspec/core/example'
245
+ require "active_support/inflector/transliterate"
246
+ require "rspec/core"
247
+ require "rspec/core/example"
248
248
 
249
249
  module RSpec
250
250
  module Core
data/lib/appmap/trace.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'delegate'
3
+ require "delegate"
4
4
 
5
5
  module AppMap
6
6
  module Trace
@@ -21,7 +21,7 @@ module AppMap
21
21
  end
22
22
 
23
23
  def comment
24
- return nil if source_location.nil? || source_location.first.start_with?('<')
24
+ return nil if source_location.nil? || source_location.first.start_with?("<")
25
25
 
26
26
  # Do not use method_source's comment method because it's slow
27
27
  @comment ||= RubyMethod.last_comment(*source_location)
@@ -71,8 +71,8 @@ module AppMap
71
71
  end
72
72
  end
73
73
 
74
- def enabled?
75
- @tracers.any?(&:enabled?)
74
+ def enabled?(thread_id: nil)
75
+ @tracers.any? { |t| t.enabled?(thread_id: thread_id) }
76
76
  end
77
77
 
78
78
  def last_package_for_current_thread
@@ -103,11 +103,11 @@ module AppMap
103
103
  class StackPrinter
104
104
  class << self
105
105
  def enabled?
106
- ENV['APPMAP_PRINT_STACKS'] == 'true'
106
+ ENV["APPMAP_PRINT_STACKS"] == "true"
107
107
  end
108
108
 
109
109
  def depth
110
- (ENV['APPMAP_STACK_DEPTH'] || 20).to_i
110
+ (ENV["APPMAP_STACK_DEPTH"] || 20).to_i
111
111
  end
112
112
  end
113
113
 
@@ -116,21 +116,21 @@ module AppMap
116
116
  end
117
117
 
118
118
  def record(event)
119
- stack = caller.select { |line| !line.index('/lib/appmap/') }[0...StackPrinter.depth].join("\n ")
119
+ stack = caller.select { |line| !line.index("/lib/appmap/") }[0...StackPrinter.depth].join("\n ")
120
120
  stack_hash = Digest::SHA256.hexdigest(stack)
121
121
  return if @@stacks[stack_hash]
122
122
 
123
123
  @@stacks[stack_hash] = stack
124
124
  puts
125
- puts 'Event: ' + event.to_h.map { |k, v| [ "#{k}: #{v}" ] }.join(', ')
126
- puts ' ' + stack
125
+ puts "Event: " + event.to_h.map { |k, v| ["#{k}: #{v}"] }.join(", ")
126
+ puts " " + stack
127
127
  puts
128
128
  end
129
129
  end
130
130
 
131
131
  class Tracer
132
132
  attr_accessor :stacks
133
- attr_reader :thread_id, :events
133
+ attr_reader :thread_id, :events
134
134
 
135
135
  # Records the events which happen in a program.
136
136
  def initialize(thread_id: nil)
@@ -146,8 +146,10 @@ module AppMap
146
146
  @enabled = true
147
147
  end
148
148
 
149
- def enabled?
150
- @enabled
149
+ def enabled?(thread_id: nil)
150
+ return false unless @enabled
151
+
152
+ thread_id.nil? || @thread_id.nil? || @thread_id == thread_id
151
153
  end
152
154
 
153
155
  # Private function. Use AppMap.tracing#delete.
data/lib/appmap/util.rb CHANGED
@@ -1,88 +1,92 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bundler'
4
- require 'fileutils'
3
+ require "bundler"
4
+ require "fileutils"
5
5
 
6
+ # rubocop:disable Metrics/MethodLength
7
+ # rubocop:disable Metrics/ModuleLength
8
+ # rubocop:disable Metrics/ClassLength
9
+ # rubocop:disable Metrics/AbcSize
6
10
  module AppMap
7
11
  module Util
8
12
  # https://wynnnetherland.com/journal/a-stylesheet-author-s-guide-to-terminal-colors/
9
13
  # Embed in a String to clear all previous ANSI sequences.
10
- CLEAR = "\e[0m"
11
- BOLD = "\e[1m"
14
+ CLEAR = "\e[0m"
15
+ BOLD = "\e[1m"
12
16
 
13
17
  # Colors
14
- BLACK = "\e[30m"
15
- RED = "\e[31m"
16
- GREEN = "\e[32m"
17
- YELLOW = "\e[33m"
18
- BLUE = "\e[34m"
18
+ BLACK = "\e[30m"
19
+ RED = "\e[31m"
20
+ GREEN = "\e[32m"
21
+ YELLOW = "\e[33m"
22
+ BLUE = "\e[34m"
19
23
  MAGENTA = "\e[35m"
20
- CYAN = "\e[36m"
21
- WHITE = "\e[37m"
24
+ CYAN = "\e[36m"
25
+ WHITE = "\e[37m"
22
26
 
23
27
  class << self
24
28
  def parse_function_name(name)
25
- package_tokens = name.split('/')
29
+ package_tokens = name.split("/")
26
30
 
27
31
  class_and_name = package_tokens.pop
28
- class_name, function_name, static = if class_and_name.include?('.')
29
- class_and_name.split('.',
30
- 2) + [ true ]
31
- else
32
- class_and_name.split(
33
- '#', 2
34
- ) + [ false ]
35
- end
32
+ class_name, function_name, static = if class_and_name.include?(".")
33
+ class_and_name.split(".",
34
+ 2) + [true]
35
+ else
36
+ class_and_name.split(
37
+ "#", 2
38
+ ) + [false]
39
+ end
36
40
 
37
41
  raise "Malformed fully-qualified function name #{name}" unless function_name
38
42
 
39
- [ package_tokens.empty? ? 'ruby' : package_tokens.join('/'), class_name, static, function_name ]
43
+ [package_tokens.empty? ? "ruby" : package_tokens.join("/"), class_name, static, function_name]
40
44
  end
41
45
 
42
46
  # scenario_filename builds a suitable file name from a scenario name.
43
47
  # Special characters are removed, and the file name is truncated to fit within
44
48
  # shell limitations.
45
- def scenario_filename(name, max_length: 255, separator: '_', extension: '.appmap.json')
49
+ def scenario_filename(name, max_length: 255, separator: "_", extension: ".appmap.json")
46
50
  # Cribbed from v5 version of ActiveSupport:Inflector#parameterize:
47
51
  # https://github.com/rails/rails/blob/v5.2.4/activesupport/lib/active_support/inflector/transliterate.rb#L92
48
52
  # Replace accented chars with their ASCII equivalents.
49
53
 
50
- fname = name.encode('utf-8', invalid: :replace, undef: :replace, replace: '_')
54
+ fname = name.encode("utf-8", invalid: :replace, undef: :replace, replace: "_")
51
55
 
52
56
  # Turn unwanted chars into the separator.
53
57
  fname.gsub!(/[^a-z0-9\-_]+/i, separator)
54
58
 
55
59
  re_sep = Regexp.escape(separator)
56
- re_duplicate_separator = /#{re_sep}{2,}/
60
+ re_duplicate_separator = /#{re_sep}{2,}/
57
61
  re_leading_trailing_separator = /^#{re_sep}|#{re_sep}$/i
58
62
 
59
63
  # No more than one of the separator in a row.
60
64
  fname.gsub!(re_duplicate_separator, separator)
61
65
 
62
66
  # Finally, Remove leading/trailing separator.
63
- fname.gsub!(re_leading_trailing_separator, '')
67
+ fname.gsub!(re_leading_trailing_separator, "")
64
68
 
65
69
  if (fname.length + extension.length) > max_length
66
- require 'base64'
67
- require 'digest'
70
+ require "base64"
71
+ require "digest"
68
72
  fname_digest = Base64.urlsafe_encode64 Digest::MD5.digest(fname), padding: false
69
- fname[max_length - fname_digest.length - extension.length - 1..-1] = [ '-', fname_digest ].join
73
+ fname[max_length - fname_digest.length - extension.length - 1..-1] = ["-", fname_digest].join
70
74
  end
71
75
 
72
- [ fname, extension ].join
76
+ [fname, extension].join
73
77
  end
74
78
 
75
79
  # sanitize_paths removes ephemeral values from objects with
76
80
  # embedded paths (e.g. an event or a classmap), making events
77
81
  # easier to compare across runs.
78
82
  def sanitize_paths(h)
79
- require 'hashie'
83
+ require "hashie"
80
84
  h.extend(Hashie::Extensions::DeepLocate)
81
85
  keys = %i[path location]
82
86
  h.deep_locate lambda { |k, _v, o|
83
87
  next unless keys.include?(k)
84
88
 
85
- fix = ->(v) { v.gsub(%r{#{Gem.dir}/gems/.*(?=lib)}, '') }
89
+ fix = ->(v) { v.gsub(%r{#{Gem.dir}/gems/.*(?=lib)}, "") }
86
90
  keys.each { |k| o[k] = fix.call(o[k]) if o[k] }
87
91
  }
88
92
 
@@ -105,8 +109,8 @@ module AppMap
105
109
  headers = event.dig(field, :headers)
106
110
  next unless headers
107
111
 
108
- headers['Date'] = '<instanceof date>' if headers['Date']
109
- headers['Server'] = headers['Server'].match(/^(\w+)/)[0] if headers['Server']
112
+ headers["Date"] = "<instanceof date>" if headers["Date"]
113
+ headers["Server"] = headers["Server"].match(/^(\w+)/)[0] if headers["Server"]
110
114
  end
111
115
 
112
116
  case event[:event]
@@ -122,8 +126,8 @@ module AppMap
122
126
  blank?(headers) ? nil : headers
123
127
  end
124
128
 
125
- unless env['rack.version']
126
- warn 'Request headers does not contain rack.version. HTTP_ prefix is not expected.'
129
+ unless env["rack.version"]
130
+ warn "Request headers does not contain rack.version. HTTP_ prefix is not expected."
127
131
  return finalize_headers.call(env.dup)
128
132
  end
129
133
 
@@ -131,15 +135,15 @@ module AppMap
131
135
  # Apparently, it's following the CGI spec in doing so.
132
136
  # https://datatracker.ietf.org/doc/html/rfc3875#section-4.1.18
133
137
  matching_headers = env
134
- .select { |k, _v| k.to_s.start_with? 'HTTP_' }
135
- .merge(
136
- 'CONTENT_TYPE' => env['CONTENT_TYPE'],
137
- 'CONTENT_LENGTH' => env['CONTENT_LENGTH'],
138
- 'AUTHORIZATION' => env['AUTHORIZATION']
139
- )
140
- .reject { |_k, v| blank?(v) }
141
- .each_with_object({}) do |kv, memo|
142
- key = kv[0].sub(/^HTTP_/, '').split('_').map(&:capitalize).join('-')
138
+ .select { |k, _v| k.to_s.start_with? "HTTP_" }
139
+ .merge(
140
+ "CONTENT_TYPE" => env["CONTENT_TYPE"],
141
+ "CONTENT_LENGTH" => env["CONTENT_LENGTH"],
142
+ "AUTHORIZATION" => env["AUTHORIZATION"]
143
+ )
144
+ .reject { |_k, v| blank?(v) }
145
+ .each_with_object({}) do |kv, memo|
146
+ key = kv[0].sub(/^HTTP_/, "").split("_").map(&:capitalize).join("-")
143
147
  value = kv[1]
144
148
  memo[key] = value
145
149
  end
@@ -147,9 +151,9 @@ module AppMap
147
151
  end
148
152
 
149
153
  def normalize_path(path)
150
- is_local_path = -> { path.index(Dir.pwd) == 0 }
151
- is_bundled_path = -> { path.index(Bundler.bundle_path.to_s) == 0 }
152
- is_vendored_path = -> { path.index(File.join(Dir.pwd, 'vendor/bundle')) == 0 }
154
+ is_local_path = -> { path.index(Dir.pwd) == 0 }
155
+ is_bundled_path = -> { path.index(Bundler.bundle_path.to_s) == 0 }
156
+ is_vendored_path = -> { path.index(File.join(Dir.pwd, "vendor/bundle")) == 0 }
153
157
 
154
158
  if is_local_path.call && !is_bundled_path.call && !is_vendored_path.call
155
159
  path[Dir.pwd.length + 1..-1]
@@ -168,13 +172,13 @@ module AppMap
168
172
  def extract_test_failure(exception)
169
173
  return unless exception
170
174
 
171
- { message: exception.message }.tap do |test_failure|
175
+ {message: exception.message}.tap do |test_failure|
172
176
  first_location = exception.backtrace_locations&.find do |location|
173
177
  !Pathname.new(normalize_path(location.absolute_path || location.path)).absolute?
174
178
  end
175
179
  if first_location
176
180
  test_failure[:location] =
177
- [ normalize_path(first_location.path), first_location.lineno ].join(':')
181
+ [normalize_path(first_location.path), first_location.lineno].join(":")
178
182
  end
179
183
  end
180
184
  end
@@ -182,21 +186,23 @@ module AppMap
182
186
  # Convert a Rails-style path from /org/:org_id(.:format)
183
187
  # to Swagger-style paths like /org/{org_id}
184
188
  def swaggerize_path(path)
185
- path = path.split('(.')[0]
186
- tokens = path.split('/')
189
+ path = path.split("(.")[0]
190
+ tokens = path.split("/")
187
191
  tokens.map do |token|
188
192
  # stop matching if an ending ) is found
189
193
  token.gsub(/^:(.*[^)])/, '{\1}')
190
- end.join('/')
194
+ end.join("/")
191
195
  end
192
196
 
193
197
  # Atomically writes AppMap data to +filename+.
194
198
  def write_appmap(filename, appmap)
195
- require 'tmpdir'
199
+ require "tmpdir"
200
+
201
+ FileUtils.mkdir_p(File.dirname(filename))
196
202
 
197
203
  # This is what Ruby Tempfile does; but we don't want the file to be unlinked.
198
204
  mode = File::RDWR | File::CREAT | File::EXCL
199
- ::Dir::Tmpname.create([ 'appmap_', '.json' ]) do |tmpname|
205
+ ::Dir::Tmpname.create(["appmap_", ".json"]) do |tmpname|
200
206
  tempfile = File.open(tmpname, mode)
201
207
  tempfile.write(JSON.generate(appmap))
202
208
  tempfile.close
@@ -207,7 +213,7 @@ module AppMap
207
213
 
208
214
  def color(text, color, bold: false)
209
215
  color = Util.const_get(color.to_s.upcase) if color.is_a?(Symbol)
210
- bold = bold ? BOLD : ''
216
+ bold = bold ? BOLD : ""
211
217
  "#{bold}#{color}#{text}#{CLEAR}"
212
218
  end
213
219
 
@@ -219,24 +225,24 @@ module AppMap
219
225
  def underscore(camel_cased_word)
220
226
  return camel_cased_word unless /[A-Z-]|::/.match?(camel_cased_word)
221
227
 
222
- word = camel_cased_word.to_s.gsub('::', '/')
228
+ word = camel_cased_word.to_s.gsub("::", "/")
223
229
  # word.gsub!(inflections.acronyms_underscore_regex) { "#{$1 && '_' }#{$2.downcase}" }
224
230
  word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
225
231
  word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
226
- word.tr!('-', '_')
232
+ word.tr!("-", "_")
227
233
  word.downcase!
228
234
  word
229
235
  end
230
236
 
231
237
  def deep_dup(hash)
232
- require 'active_support/core_ext'
238
+ require "active_support/core_ext"
233
239
  hash.deep_dup
234
240
  end
235
241
 
236
242
  def blank?(obj)
237
243
  return true if obj.nil?
238
244
 
239
- return true if obj.is_a?(String) && obj == ''
245
+ return true if obj.is_a?(String) && obj == ""
240
246
 
241
247
  return true if obj.respond_to?(:length) && obj.length == 0
242
248
 
@@ -257,7 +263,7 @@ module AppMap
257
263
  def startup_message(msg)
258
264
  if defined?(::Rails) && defined?(::Rails.logger) && ::Rails.logger
259
265
  ::Rails.logger.info msg
260
- elsif ENV['DEBUG'] == 'true'
266
+ elsif ENV["DEBUG"] == "true"
261
267
  warn msg
262
268
  end
263
269
 
@@ -265,7 +271,7 @@ module AppMap
265
271
  end
266
272
 
267
273
  def ruby_minor_version
268
- @ruby_minor_version ||= RUBY_VERSION.split('.')[0..1].join('.').to_f
274
+ @ruby_minor_version ||= RUBY_VERSION.split(".")[0..1].join(".").to_f
269
275
  end
270
276
 
271
277
  def gettime
@@ -274,3 +280,7 @@ module AppMap
274
280
  end
275
281
  end
276
282
  end
283
+ # rubocop:enable Metrics/MethodLength
284
+ # rubocop:enable Metrics/ModuleLength
285
+ # rubocop:enable Metrics/ClassLength
286
+ # rubocop:enable Metrics/AbcSize
@@ -3,7 +3,7 @@
3
3
  module AppMap
4
4
  URL = 'https://github.com/applandinc/appmap-ruby'
5
5
 
6
- VERSION = '0.102.2'
6
+ VERSION = '0.103.0'
7
7
 
8
8
  APPMAP_FORMAT_VERSION = '1.12.0'
9
9
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.102.2
4
+ version: 0.103.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Gilpin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-07 00:00:00.000000000 Z
11
+ date: 2023-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: method_source
@@ -150,20 +150,6 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: standardrb
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '1.0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '1.0'
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: climate_control
169
155
  requirement: !ruby/object:Gem::Requirement
@@ -324,8 +310,10 @@ files:
324
310
  - ".nvmrc"
325
311
  - ".rbenv-gemsets"
326
312
  - ".releaserc.yml"
313
+ - ".rubocop.yml"
327
314
  - ".ruby-version"
328
315
  - ".rufo"
316
+ - ".standard.yml"
329
317
  - ".travis.yml"
330
318
  - ARCHITECTURE.md
331
319
  - CHANGELOG.md
@@ -414,6 +402,7 @@ files:
414
402
  - lib/appmap/hook/method.rb
415
403
  - lib/appmap/hook/method/ruby2.rb
416
404
  - lib/appmap/hook/method/ruby3.rb
405
+ - lib/appmap/hook/record_around.rb
417
406
  - lib/appmap/hook_log.rb
418
407
  - lib/appmap/metadata.rb
419
408
  - lib/appmap/middleware/remote_recording.rb