appmap 0.70.2 → 0.72.2

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