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 +4 -4
- data/CHANGELOG.md +36 -0
- data/ext/appmap/extconf.rb +1 -1
- data/lib/appmap/builtin_hooks/json.yml +6 -2
- data/lib/appmap/builtin_hooks/logger.yml +3 -0
- data/lib/appmap/builtin_hooks/marshal.yml +8 -0
- data/lib/appmap/builtin_hooks/{yaml.yml → psych.yml} +9 -3
- data/lib/appmap/gem_hooks/actionpack.yml +7 -2
- data/lib/appmap/gem_hooks/activerecord.yml +4 -0
- data/lib/appmap/gem_hooks/rails.yml +2 -0
- data/lib/appmap/gem_hooks/railties.yml +2 -0
- data/lib/appmap/gem_hooks/sprockets.yml +2 -0
- data/lib/appmap/hook/method.rb +7 -2
- data/lib/appmap/util.rb +9 -3
- data/lib/appmap/version.rb +1 -1
- data/spec/config_spec.rb +86 -213
- data/spec/fixtures/hook/prepended_override.rb +14 -0
- data/spec/hook_spec.rb +26 -0
- data/spec/rails_recording_spec.rb +2 -1
- metadata +10 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87322a2d5ba58dfc1fb69259af06c59077d3897f1e37e91e5a94dd2cbba1478b
|
4
|
+
data.tar.gz: ace21bbbd53fa487b27339e2af8fb16f4f8ec7b3ca7bbe218ba205b8ff7fc94b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
|
data/ext/appmap/extconf.rb
CHANGED
@@ -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
|
-
|
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
|
data/lib/appmap/hook/method.rb
CHANGED
@@ -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
|
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('-')
|
data/lib/appmap/version.rb
CHANGED
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(
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
-
"
|
30
|
-
"
|
31
|
-
"
|
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
|
-
"
|
37
|
+
"dependent_tasks" => [
|
38
|
+
"swagger"
|
61
39
|
],
|
62
|
-
"
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
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
|
-
|
83
|
-
"
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
]
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
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
|
-
|
205
|
-
"
|
206
|
-
|
207
|
-
|
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
|
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.
|
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-
|
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/
|
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
|