appmap 0.70.2 → 0.72.2

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: d65574736497b9626d5d45bedee98bf5b4e810dada23199cb3b6857928c609a7
4
- data.tar.gz: d90ebdbb5978d36a9fa78aab06df63578645d600dc26e8a3c3e78e5a9c3f198d
3
+ metadata.gz: 87322a2d5ba58dfc1fb69259af06c59077d3897f1e37e91e5a94dd2cbba1478b
4
+ data.tar.gz: ace21bbbd53fa487b27339e2af8fb16f4f8ec7b3ca7bbe218ba205b8ff7fc94b
5
5
  SHA512:
6
- metadata.gz: e6645bda09b9fb033825c4230518322b537b013d96ec5c76de25736729a10d2338fd3361481901c804472c23f68552f5f6822d487dbd935ab8c45b67810b4a7a
7
- data.tar.gz: a831e8748e982cf7ebb65f0a3bc0a9209a7e8b1991b85716d4fc43898685749304eeb5450b5e84a4657187b95f38b05c936a49b35ad18e30e8070110ddccf7ee
6
+ metadata.gz: 9eaebd3dbb1bf74880eeafc2379a78e73d747f4a41a507152c0d3840eefff1b4f8ae3c6cdecfb15bb08e44b5f3d19779b1c265746148ddb569715ace6c17a834
7
+ data.tar.gz: 4569886b26db0d49d06fd0bb649997fc29d9fea665c59495448e0b1669581757003f3034536392bf8e4e5cb16955ce12b4ca3e2ffd90cb8af8057a8edb4f093a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,39 @@
1
+ ## [0.72.2](https://github.com/applandinc/appmap-ruby/compare/v0.72.1...v0.72.2) (2022-02-11)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Ensure request headers includes all relevant fields ([e866f68](https://github.com/applandinc/appmap-ruby/commit/e866f686be974dfe29f706564217e4ee302bb55a))
7
+
8
+ ## [0.72.1](https://github.com/applandinc/appmap-ruby/compare/v0.72.0...v0.72.1) (2022-01-31)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * Check that Procs respond to #ruby2_keywords ([12863dc](https://github.com/applandinc/appmap-ruby/commit/12863dc229f91fd813430db716856f111007f1c2)), closes [#ruby2](https://github.com/applandinc/appmap-ruby/issues/ruby2) [#ruby2](https://github.com/applandinc/appmap-ruby/issues/ruby2)
14
+ * Don't stomp on $CFLAGS ([c0b44df](https://github.com/applandinc/appmap-ruby/commit/c0b44df2d85d97b7b379d6f030df54a77a88291b))
15
+ * Update labels for deserialization ([4f51825](https://github.com/applandinc/appmap-ruby/commit/4f5182526d74fb3491c700bca16e203a010bb111))
16
+
17
+ # [0.72.0](https://github.com/applandinc/appmap-ruby/compare/v0.71.0...v0.72.0) (2022-01-24)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * Fix a stack overflow when an override is prepended ([540907b](https://github.com/applandinc/appmap-ruby/commit/540907b1a9fa063d25ddbaf406674f2e16b11bfe))
23
+ * Hook the first class or module in the ancestor chain ([8143f14](https://github.com/applandinc/appmap-ruby/commit/8143f145691a98e6e83563635db783ba8d393d9c))
24
+
25
+
26
+ ### Features
27
+
28
+ * Label JSON, Marshal and YAML with (de)serialize ([318d294](https://github.com/applandinc/appmap-ruby/commit/318d294c1d921dacb18f1d3e1776282d9f208215))
29
+
30
+ # [0.71.0](https://github.com/applandinc/appmap-ruby/compare/v0.70.2...v0.71.0) (2022-01-19)
31
+
32
+
33
+ ### Features
34
+
35
+ * Add labels for http.session.clear, dao.materialize, log ([8e6784b](https://github.com/applandinc/appmap-ruby/commit/8e6784b82959eb5924d4675b43f6b98c7bd1b779))
36
+
1
37
  ## [0.70.2](https://github.com/applandinc/appmap-ruby/compare/v0.70.1...v0.70.2) (2022-01-12)
2
38
 
3
39
 
@@ -1,7 +1,7 @@
1
1
  require "mkmf"
2
2
 
3
3
 
4
- $CFLAGS='-Werror'
4
+ $CFLAGS='-Werror ' + $CFLAGS
5
5
 
6
6
  # Per https://bugs.ruby-lang.org/issues/17865,
7
7
  # compound-token-split-by-macro was added in clang 12 and broke
@@ -1,4 +1,8 @@
1
1
  - method: JSON::Ext::Parser#parse
2
- label: format.json.parse
2
+ labels:
3
+ - format.json.parse
4
+ - deserialize.safe
3
5
  - method: JSON::Ext::Generator::State#generate
4
- label: format.json.generate
6
+ labels:
7
+ - format.json.generate
8
+ - serialize
@@ -0,0 +1,3 @@
1
+ - method: Logger::LogDevice#write
2
+ require_name: logger
3
+ label: log
@@ -0,0 +1,8 @@
1
+ - methods:
2
+ - Marshal#load
3
+ - Marshal#restore
4
+ require_name: ruby
5
+ label: deserialize.unsafe
6
+ - method: Marshal#dump
7
+ require_name: ruby
8
+ label: serialize
@@ -1,10 +1,16 @@
1
1
  - methods:
2
- - Psych#load
3
- - Psych#load_stream
4
2
  - Psych#parse
5
3
  - Psych#parse_stream
6
4
  label: format.yaml.parse
5
+ - methods:
6
+ - Psych#load
7
+ - Psych#load_stream
8
+ label: deserialize.unsafe
9
+ - method: Psych#safe_load
10
+ label: deserialize.safe
7
11
  - methods:
8
12
  - Psych#dump
9
13
  - Psych#dump_stream
10
- label: format.yaml.generate
14
+ labels:
15
+ - format.yaml.generate
16
+ - serialize
@@ -10,17 +10,22 @@
10
10
  - methods:
11
11
  - ActionDispatch::Request::Session#destroy
12
12
  - ActionDispatch::Request::Session#[]=
13
- - ActionDispatch::Request::Session#clear
14
13
  - ActionDispatch::Request::Session#update
15
14
  - ActionDispatch::Request::Session#delete
16
15
  - ActionDispatch::Request::Session#merge
17
16
  - ActionDispatch::Cookies::CookieJar#[]=
18
- - ActionDispatch::Cookies::CookieJar#clear
19
17
  - ActionDispatch::Cookies::CookieJar#update
20
18
  - ActionDispatch::Cookies::CookieJar#delete
21
19
  - ActionDispatch::Cookies::CookieJar#recycle!
22
20
  label: http.session.write
23
21
  require_name: action_dispatch
22
+ - methods:
23
+ - ActionDispatch::Request::Session#clear
24
+ - ActionDispatch::Cookies::CookieJar#clear
25
+ labels:
26
+ - http.session.write
27
+ - http.session.clear
28
+ require_name: action_dispatch
24
29
  - methods:
25
30
  - ActionDispatch::Cookies::EncryptedCookieJar#[]=
26
31
  - ActionDispatch::Cookies::EncryptedCookieJar#clear
@@ -0,0 +1,4 @@
1
+ - method: ActiveRecord::Relation#records
2
+ label: dao.materialize
3
+ - method: ActiveRecord::FixtureSet::File#raw_rows
4
+ # label: deserialize.safe
@@ -0,0 +1,2 @@
1
+ - method: Rails::Application#config_for
2
+ # label: deserialize.safe
@@ -0,0 +1,2 @@
1
+ - method: Rails::Application::Configuration#database_configuration
2
+ # label: deserialize.safe
@@ -0,0 +1,2 @@
1
+ - method: Sprockets::EncodingUtils#unmarshaled_deflated
2
+ label: deserialize.safe
@@ -1,6 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppMap
4
+ NEW_RUBY = Util.ruby_minor_version >= 2.7
5
+ if NEW_RUBY && !Proc.instance_methods.include?(:ruby2_keywords)
6
+ warn "Ruby is #{RUBY_VERSION}, but Procs don't respond to #ruby2_keywords"
7
+ end
8
+
4
9
  class Hook
5
10
  class Method
6
11
  attr_reader :hook_package, :hook_class, :hook_method
@@ -56,7 +61,7 @@ module AppMap
56
61
 
57
62
  call_instance_method = -> {
58
63
  # https://github.com/applandinc/appmap-ruby/issues/153
59
- if Util.ruby_minor_version >= 2.7 && is_array_containing_empty_hash.(args) && hook_method.arity == 1
64
+ if NEW_RUBY && is_array_containing_empty_hash.(args) && hook_method.arity == 1
60
65
  instance_method.call({}, &block)
61
66
  else
62
67
  instance_method.call(*args, &block)
@@ -94,7 +99,7 @@ module AppMap
94
99
  end
95
100
  hook_method_def = hook_method_def.ruby2_keywords if hook_method_def.respond_to?(:ruby2_keywords)
96
101
 
97
- hook_class.define_method_with_arity(hook_method.name, hook_method.arity, hook_method_def)
102
+ hook_class.ancestors.first.define_method_with_arity(hook_method.name, hook_method.arity, hook_method_def)
98
103
  end
99
104
 
100
105
  protected
data/lib/appmap/util.rb CHANGED
@@ -121,15 +121,21 @@ module AppMap
121
121
  blank?(headers) ? nil : headers
122
122
  end
123
123
 
124
- # Rack prepends HTTP_ to all client-sent headers.
125
-
126
124
  if !env['rack.version']
127
125
  warn "Request headers does not contain rack.version. HTTP_ prefix is not expected."
128
126
  return finalize_headers.call(env.dup)
129
127
  end
130
128
 
129
+ # Rack prepends HTTP_ to all client-sent headers (except Content-Type and Content-Length?).
130
+ # Apparently, it's following the CGI spec in doing so.
131
+ # https://datatracker.ietf.org/doc/html/rfc3875#section-4.1.18
131
132
  matching_headers = env
132
- .select { |k,v| k.start_with? 'HTTP_'}
133
+ .select { |k,v| k.start_with? 'HTTP_' }
134
+ .merge(
135
+ 'CONTENT_TYPE' => env['CONTENT_TYPE'],
136
+ 'CONTENT_LENGTH' => env['CONTENT_LENGTH'],
137
+ 'AUTHORIZATION' => env['AUTHORIZATION']
138
+ )
133
139
  .reject { |k,v| blank?(v) }
134
140
  .each_with_object({}) do |kv, memo|
135
141
  key = kv[0].sub(/^HTTP_/, '').split('_').map(&:capitalize).join('-')
@@ -3,7 +3,7 @@
3
3
  module AppMap
4
4
  URL = 'https://github.com/applandinc/appmap-ruby'
5
5
 
6
- VERSION = '0.70.2'
6
+ VERSION = '0.72.2'
7
7
 
8
8
  APPMAP_FORMAT_VERSION = '1.5.1'
9
9
 
data/spec/config_spec.rb CHANGED
@@ -20,227 +20,100 @@ describe AppMap::Config, docker: false do
20
20
  }.deep_stringify_keys!
21
21
  config = AppMap::Config.load(config_data)
22
22
 
23
- expect(JSON.parse(JSON.generate(config.as_json))).to eq(JSON.parse(<<~FIXTURE))
24
- {
25
- "name": "test",
26
- "appmap_dir": "tmp/appmap",
27
- "packages": [
23
+ expect(config.as_json.keys.sort).to eq(["appmap_dir", "builtin_hooks", "depends_config", "exclude", "functions", "gem_hooks", "hook_paths", "name", "packages", "swagger_config"])
24
+ expect(config.as_json['appmap_dir']).to eq('tmp/appmap')
25
+ expect(config.as_json['name']).to eq('test')
26
+ expect(config.as_json['packages']).to eq([])
27
+ expect(config.as_json['depends_config']).to eq({
28
+ "base_dir" => nil,
29
+ "base_branches" => [
30
+ "remotes/origin/main",
31
+ "remotes/origin/master"
28
32
  ],
29
- "swagger_config": {
30
- "project_name": null,
31
- "project_version": "1.0",
32
- "output_dir": "swagger",
33
- "description": "Generate Swagger from AppMaps"
34
- },
35
- "depends_config": {
36
- "base_dir": null,
37
- "base_branches": [
38
- "remotes/origin/main",
39
- "remotes/origin/master"
40
- ],
41
- "test_file_patterns": [
42
- "spec/**/*_spec.rb",
43
- "test/**/*_test.rb"
44
- ],
45
- "dependent_tasks": [
46
- "swagger"
47
- ],
48
- "description": "Bring AppMaps up to date with local file modifications, and updated derived data such as Swagger files",
49
- "rspec_environment_method": "AppMap::Depends.test_env",
50
- "minitest_environment_method": "AppMap::Depends.test_env",
51
- "rspec_select_tests_method": "AppMap::Depends.select_rspec_tests",
52
- "minitest_select_tests_method": "AppMap::Depends.select_minitest_tests",
53
- "rspec_test_command_method": "AppMap::Depends.rspec_test_command",
54
- "minitest_test_command_method": "AppMap::Depends.minitest_test_command"
55
- },
56
- "hook_paths": [
57
- "pkg",
58
- "#{Gem.loaded_specs['activesupport'].gem_dir}"
33
+ "test_file_patterns" => [
34
+ "spec/**/*_spec.rb",
35
+ "test/**/*_test.rb"
59
36
  ],
60
- "exclude": [
37
+ "dependent_tasks" => [
38
+ "swagger"
61
39
  ],
62
- "functions": [
63
- {
64
- "cls": "cls",
65
- "target_methods": {
66
- "package": "pkg",
67
- "method_names": [
68
- "fn"
69
- ]
70
- }
71
- },
72
- {
73
- "cls": "cls",
74
- "target_methods": {
75
- "package": "pkg",
76
- "method_names": [
77
- "new_fn"
78
- ]
79
- }
40
+ "description" => "Bring AppMaps up to date with local file modifications, and updated derived data such as Swagger files",
41
+ "rspec_environment_method" => "AppMap::Depends.test_env",
42
+ "minitest_environment_method" => "AppMap::Depends.test_env",
43
+ "rspec_select_tests_method" => "AppMap::Depends.select_rspec_tests",
44
+ "minitest_select_tests_method" => "AppMap::Depends.select_minitest_tests",
45
+ "rspec_test_command_method" => "AppMap::Depends.rspec_test_command",
46
+ "minitest_test_command_method" => "AppMap::Depends.minitest_test_command"
47
+ })
48
+ expect(config.as_json['swagger_config']).to eq({
49
+ "project_name" => nil,
50
+ "project_version" => "1.0",
51
+ "output_dir" => "swagger",
52
+ "description" => "Generate Swagger from AppMaps"
53
+ })
54
+ expect(config.as_json['hook_paths']).to eq([
55
+ "pkg",
56
+ "#{Gem.loaded_specs['activesupport'].gem_dir}"
57
+ ])
58
+ expect(config.as_json['exclude']).to eq([])
59
+ expect(config.as_json['functions'].map(&:deep_stringify_keys)).to eq([
60
+ {
61
+ "cls" => "cls",
62
+ "target_methods" => {
63
+ "package" => "pkg",
64
+ "method_names" => [
65
+ :fn
66
+ ]
80
67
  }
81
- ],
82
- "builtin_hooks": {
83
- "JSON::Ext::Parser": [
84
- {
85
- "package": "json",
86
- "method_names": [
87
- "parse"
88
- ]
89
- }
90
- ],
91
- "JSON::Ext::Generator::State": [
92
- {
93
- "package": "json",
94
- "method_names": [
95
- "generate"
96
- ]
97
- }
98
- ],
99
- "Net::HTTP": [
100
- {
101
- "package": "net/http",
102
- "method_names": [
103
- "request"
104
- ]
105
- }
106
- ],
107
- "OpenSSL::PKey::PKey": [
108
- {
109
- "package": "openssl",
110
- "method_names": [
111
- "sign"
112
- ]
113
- }
114
- ],
115
- "OpenSSL::X509::Request": [
116
- {
117
- "package": "openssl",
118
- "method_names": [
119
- "sign"
120
- ]
121
- },
122
- {
123
- "package": "openssl",
124
- "method_names": [
125
- "verify"
126
- ]
127
- }
128
- ],
129
- "OpenSSL::X509::Certificate": [
130
- {
131
- "package": "openssl",
132
- "method_names": [
133
- "sign"
134
- ]
135
- }
136
- ],
137
- "OpenSSL::PKCS5": [
138
- {
139
- "package": "openssl",
140
- "method_names": [
141
- "pbkdf2_hmac"
142
- ]
143
- },
144
- {
145
- "package": "openssl",
146
- "method_names": [
147
- "pbkdf2_hmac_sha1"
148
- ]
149
- }
150
- ],
151
- "OpenSSL::Cipher": [
152
- {
153
- "package": "openssl",
154
- "method_names": [
155
- "encrypt"
156
- ]
157
- },
158
- {
159
- "package": "openssl",
160
- "method_names": [
161
- "decrypt"
162
- ]
163
- }
164
- ],
165
- "Psych": [
166
- {
167
- "package": "yaml",
168
- "method_names": [
169
- "load"
170
- ]
171
- },
172
- {
173
- "package": "yaml",
174
- "method_names": [
175
- "load_stream"
176
- ]
177
- },
178
- {
179
- "package": "yaml",
180
- "method_names": [
181
- "parse"
182
- ]
183
- },
184
- {
185
- "package": "yaml",
186
- "method_names": [
187
- "parse_stream"
188
- ]
189
- },
190
- {
191
- "package": "yaml",
192
- "method_names": [
193
- "dump"
194
- ]
195
- },
196
- {
197
- "package": "yaml",
198
- "method_names": [
199
- "dump_stream"
200
- ]
201
- }
68
+ },
69
+ {
70
+ "cls" => "cls",
71
+ "target_methods" => {
72
+ "package" => "pkg",
73
+ "method_names" => [
74
+ :new_fn
75
+ ]
76
+ }
77
+ }
78
+ ])
79
+ expect(config.as_json['builtin_hooks']).to have_key('JSON::Ext::Parser')
80
+ expect(config.as_json['builtin_hooks']['JSON::Ext::Parser'].map(&:deep_stringify_keys)).to eq([{
81
+ "package" => "json",
82
+ "method_names" => [
83
+ :parse
84
+ ]
85
+ }
86
+ ])
87
+ expect(config.as_json['gem_hooks']).to have_key('cls')
88
+ expect(config.as_json['gem_hooks']['cls'].map(&:deep_stringify_keys)).to eq([
89
+ {
90
+ "package" => "pkg",
91
+ "method_names" => [
92
+ :fn
93
+ ]
94
+ },
95
+ {
96
+ "package" => "pkg",
97
+ "method_names" => [
98
+ :new_fn
99
+ ]
100
+ }
101
+ ])
102
+ expect(config.as_json['gem_hooks']).to have_key('ActiveSupport::Callbacks::CallbackSequence')
103
+ expect(config.as_json['gem_hooks']['ActiveSupport::Callbacks::CallbackSequence'].map(&:deep_stringify_keys)).to eq([
104
+ {
105
+ "package" => "activesupport",
106
+ "method_names" => [
107
+ :invoke_before
202
108
  ]
203
109
  },
204
- "gem_hooks": {
205
- "cls": [
206
- {
207
- "package": "pkg",
208
- "method_names": [
209
- "fn"
210
- ]
211
- },
212
- {
213
- "package": "pkg",
214
- "method_names": [
215
- "new_fn"
216
- ]
217
- }
218
- ],
219
- "ActiveSupport::Callbacks::CallbackSequence": [
220
- {
221
- "package": "activesupport",
222
- "method_names": [
223
- "invoke_before"
224
- ]
225
- },
226
- {
227
- "package": "activesupport",
228
- "method_names": [
229
- "invoke_after"
230
- ]
231
- }
232
- ],
233
- "ActiveSupport::SecurityUtils": [
234
- {
235
- "package": "activesupport",
236
- "method_names": [
237
- "secure_compare"
238
- ]
239
- }
110
+ {
111
+ "package" => "activesupport",
112
+ "method_names" => [
113
+ :invoke_after
240
114
  ]
241
115
  }
242
- }
243
- FIXTURE
116
+ ])
244
117
  end
245
118
 
246
119
  describe AppMap::Config::Package do
@@ -0,0 +1,14 @@
1
+
2
+ module PrependedModule
3
+ def say_hello
4
+ 'please allow me to ' + super
5
+ end
6
+ end
7
+
8
+ class PrependedClass
9
+ prepend PrependedModule
10
+
11
+ def say_hello
12
+ 'introduce myself'
13
+ end
14
+ end
data/spec/hook_spec.rb CHANGED
@@ -1110,4 +1110,30 @@ describe 'AppMap class Hooking', docker: false do
1110
1110
  end
1111
1111
  end
1112
1112
  end
1113
+
1114
+ describe 'prepended override' do
1115
+ it 'does not cause stack overflow error' do
1116
+ # For the purposes of this test, the code must be statically required, then hooked,
1117
+ # then executed.
1118
+
1119
+ require_relative './fixtures/hook/prepended_override'
1120
+ require 'appmap/hook/method'
1121
+
1122
+ pkg = AppMap::Config::Package.new('fixtures/hook/prependend_override')
1123
+ AppMap::Hook::Method.new(pkg, PrependedClass, PrependedClass.public_instance_method(:say_hello)).activate
1124
+
1125
+ tracer = AppMap.tracing.trace
1126
+ AppMap::Event.reset_id_counter
1127
+ begin
1128
+ expect(PrependedClass.new.say_hello).to eq('please allow me to introduce myself')
1129
+ ensure
1130
+ AppMap.tracing.delete(tracer)
1131
+ end
1132
+
1133
+ events = collect_events(tracer)
1134
+ expect(events.length).to eq(2)
1135
+ expect(events.first[:method_id]).to eq('say_hello')
1136
+ expect(events.second[:return_value][:value]).to eq('please allow me to introduce myself')
1137
+ end
1138
+ end
1113
1139
  end
@@ -33,7 +33,8 @@ describe 'Rails' do
33
33
  'http_server_request' => hash_including(
34
34
  'request_method' => 'POST',
35
35
  'normalized_path_info' => '/api/users',
36
- 'path_info' => '/api/users'
36
+ 'path_info' => '/api/users',
37
+ 'headers' => hash_including('Content-Type' => 'application/x-www-form-urlencoded'),
37
38
  ),
38
39
  'message' => include(
39
40
  hash_including(
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.70.2
4
+ version: 0.72.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Gilpin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-12 00:00:00.000000000 Z
11
+ date: 2022-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -3406,9 +3406,11 @@ files:
3406
3406
  - lib/appmap.rb
3407
3407
  - lib/appmap/agent.rb
3408
3408
  - lib/appmap/builtin_hooks/json.yml
3409
+ - lib/appmap/builtin_hooks/logger.yml
3410
+ - lib/appmap/builtin_hooks/marshal.yml
3409
3411
  - lib/appmap/builtin_hooks/net/http.yml
3410
3412
  - lib/appmap/builtin_hooks/openssl.yml
3411
- - lib/appmap/builtin_hooks/yaml.yml
3413
+ - lib/appmap/builtin_hooks/psych.yml
3412
3414
  - lib/appmap/class_map.rb
3413
3415
  - lib/appmap/command/agent_setup/init.rb
3414
3416
  - lib/appmap/command/agent_setup/status.rb
@@ -3431,10 +3433,14 @@ files:
3431
3433
  - lib/appmap/gem_hooks/actionview.yml
3432
3434
  - lib/appmap/gem_hooks/activejob-cancel.yml
3433
3435
  - lib/appmap/gem_hooks/activejob.yml
3436
+ - lib/appmap/gem_hooks/activerecord.yml
3434
3437
  - lib/appmap/gem_hooks/activesupport.yml
3435
3438
  - lib/appmap/gem_hooks/cancancan.yml
3439
+ - lib/appmap/gem_hooks/rails.yml
3440
+ - lib/appmap/gem_hooks/railties.yml
3436
3441
  - lib/appmap/gem_hooks/resque.yml
3437
3442
  - lib/appmap/gem_hooks/sidekiq.yml
3443
+ - lib/appmap/gem_hooks/sprockets.yml
3438
3444
  - lib/appmap/handler/function.rb
3439
3445
  - lib/appmap/handler/net_http.rb
3440
3446
  - lib/appmap/handler/rails/request_handler.rb
@@ -3507,6 +3513,7 @@ files:
3507
3513
  - spec/fixtures/hook/labels.rb
3508
3514
  - spec/fixtures/hook/method_named_call.rb
3509
3515
  - spec/fixtures/hook/pkg_a/a.rb
3516
+ - spec/fixtures/hook/prepended_override.rb
3510
3517
  - spec/fixtures/hook/protected_method.rb
3511
3518
  - spec/fixtures/hook/revoke_api_key.appmap.json
3512
3519
  - spec/fixtures/hook/singleton_method.rb