appmap 0.34.2 → 0.34.4
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 +10 -0
- data/appmap.gemspec +1 -0
- data/ext/appmap/appmap.c +11 -1
- data/lib/appmap/rails/sql_handler.rb +5 -10
- data/lib/appmap/util.rb +18 -1
- data/lib/appmap/version.rb +1 -1
- data/spec/hook_spec.rb +5 -5
- metadata +16 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a3a509a94faa2a85ff11702ae55ab3df975f04416d93d169b0a24989fd520b9d
|
|
4
|
+
data.tar.gz: 3895b9c788413f85738ba487e717bf48e4dfc2e8c0792f30c6f9f6ba7dc5e9c8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 07fe201395cad27e731402b5b2ff0efd653056dad16b9301657034df0b6e7fd3a205768ef3656874f55109edfc4d788d752f8bc73f4ff6874c815104547ce281
|
|
7
|
+
data.tar.gz: cbbd1551c352519954e9ddc9dd27279d6d232663fb67fd5ed4369a603a382f140593aa195aa08f35a57b0a14d38bef07bfef0aa7bd942d660a865fb3682d500d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
# v0.34.4
|
|
2
|
+
* Make sure `AppMap:Rails::SQLExaminer::ActiveRecordExaminer.server_version` only calls
|
|
3
|
+
`ActiveRecord::Base.connection.database_version` if it's available.
|
|
4
|
+
* Fix `AppMap:Rails::SQLExaminer::ActiveRecordExaminer.database_type` returns `:postgres`
|
|
5
|
+
in all supported versions of Rails.
|
|
6
|
+
|
|
7
|
+
# v0.34.3
|
|
8
|
+
* Fix a crash in `singleton_method_owner_name` that occurred if `__attached__.class` returned
|
|
9
|
+
something other than a `Module` or a `Class`.
|
|
10
|
+
|
|
1
11
|
# v0.34.2
|
|
2
12
|
* Add an extension that gets the name of the owner of a singleton method without calling
|
|
3
13
|
any methods that may have been redefined (e.g. `#to_s` or `.name`).
|
data/appmap.gemspec
CHANGED
data/ext/appmap/appmap.c
CHANGED
|
@@ -15,7 +15,17 @@ static VALUE singleton_method_owner_name(VALUE klass, VALUE method)
|
|
|
15
15
|
if (!CLASS_OR_MODULE_P(attached)) {
|
|
16
16
|
attached = rb_funcall(attached, rb_intern("class"), 0);
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
|
|
19
|
+
// Did __attached__.class return an object that's a Module or a
|
|
20
|
+
// Class?
|
|
21
|
+
if (CLASS_OR_MODULE_P(attached)) {
|
|
22
|
+
// Yup, get it's name
|
|
23
|
+
return rb_mod_name(attached);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Nope (which seems weird, but whatever). Fall back to calling
|
|
27
|
+
// #to_s on the method's owner and hope for the best.
|
|
28
|
+
return rb_funcall(owner, rb_intern("to_s"), 0);
|
|
19
29
|
}
|
|
20
30
|
|
|
21
31
|
void Init_appmap() {
|
|
@@ -73,20 +73,15 @@ module AppMap
|
|
|
73
73
|
|
|
74
74
|
class ActiveRecordExaminer
|
|
75
75
|
def server_version
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
ActiveRecord::Base.connection.postgresql_version
|
|
79
|
-
when :sqlite
|
|
80
|
-
ActiveRecord::Base.connection.database_version.to_s
|
|
81
|
-
else
|
|
82
|
-
warn "Unable to determine database version for #{database_type.inspect}"
|
|
83
|
-
end
|
|
76
|
+
ActiveRecord::Base.connection.try(:database_version) ||\
|
|
77
|
+
warn("Unable to determine database version for #{database_type.inspect}")
|
|
84
78
|
end
|
|
85
79
|
|
|
86
80
|
def database_type
|
|
87
|
-
|
|
81
|
+
type = ActiveRecord::Base.connection.adapter_name.downcase.to_sym
|
|
82
|
+
type = :postgres if type == :postgresql
|
|
88
83
|
|
|
89
|
-
|
|
84
|
+
type
|
|
90
85
|
end
|
|
91
86
|
|
|
92
87
|
def execute_query(sql)
|
data/lib/appmap/util.rb
CHANGED
|
@@ -36,6 +36,23 @@ module AppMap
|
|
|
36
36
|
[ fname, extension ].join
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
+
# sanitize_paths removes ephemeral values from objects with
|
|
40
|
+
# embedded paths (e.g. an event or a classmap), making events
|
|
41
|
+
# easier to compare across runs.
|
|
42
|
+
def sanitize_paths(h)
|
|
43
|
+
require 'hashie'
|
|
44
|
+
h.extend(Hashie::Extensions::DeepLocate)
|
|
45
|
+
keys = %i(path location)
|
|
46
|
+
entries = h.deep_locate ->(k,v,o) {
|
|
47
|
+
next unless keys.include?(k)
|
|
48
|
+
|
|
49
|
+
fix = ->(v) {v.gsub(%r{#{Gem.dir}/gems/.*(?=lib)}, '')}
|
|
50
|
+
keys.each {|k| o[k] = fix.(o[k]) if o[k] }
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
h
|
|
54
|
+
end
|
|
55
|
+
|
|
39
56
|
# sanitize_event removes ephemeral values from an event, making
|
|
40
57
|
# events easier to compare across runs.
|
|
41
58
|
def sanitize_event(event, &block)
|
|
@@ -49,7 +66,7 @@ module AppMap
|
|
|
49
66
|
|
|
50
67
|
case event[:event]
|
|
51
68
|
when :call
|
|
52
|
-
event
|
|
69
|
+
sanitize_paths(event)
|
|
53
70
|
end
|
|
54
71
|
|
|
55
72
|
event
|
data/lib/appmap/version.rb
CHANGED
data/spec/hook_spec.rb
CHANGED
|
@@ -22,7 +22,7 @@ describe 'AppMap class Hooking', docker: false do
|
|
|
22
22
|
while tracer.event?
|
|
23
23
|
events << tracer.next_event.to_h
|
|
24
24
|
end
|
|
25
|
-
end.map(&AppMap::Util.method(:sanitize_event))
|
|
25
|
+
end.map(&AppMap::Util.method(:sanitize_event))
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def invoke_test_file(file, setup: nil, &block)
|
|
@@ -50,7 +50,7 @@ describe 'AppMap class Hooking', docker: false do
|
|
|
50
50
|
def test_hook_behavior(file, events_yaml, setup: nil, &block)
|
|
51
51
|
config, tracer = invoke_test_file(file, setup: setup, &block)
|
|
52
52
|
|
|
53
|
-
events = collect_events(tracer)
|
|
53
|
+
events = collect_events(tracer).to_yaml
|
|
54
54
|
|
|
55
55
|
expect(Diffy::Diff.new(events_yaml, events).to_s).to eq('')
|
|
56
56
|
|
|
@@ -500,7 +500,7 @@ describe 'AppMap class Hooking', docker: false do
|
|
|
500
500
|
:event: :call
|
|
501
501
|
:defined_class: ActiveSupport::SecurityUtils
|
|
502
502
|
:method_id: secure_compare
|
|
503
|
-
:path:
|
|
503
|
+
:path: lib/active_support/security_utils.rb
|
|
504
504
|
:lineno: 26
|
|
505
505
|
:static: true
|
|
506
506
|
:parameters:
|
|
@@ -598,7 +598,7 @@ describe 'AppMap class Hooking', docker: false do
|
|
|
598
598
|
:children:
|
|
599
599
|
- :name: secure_compare
|
|
600
600
|
:type: function
|
|
601
|
-
:location:
|
|
601
|
+
:location: lib/active_support/security_utils.rb:26
|
|
602
602
|
:static: true
|
|
603
603
|
:labels:
|
|
604
604
|
- security
|
|
@@ -624,7 +624,7 @@ describe 'AppMap class Hooking', docker: false do
|
|
|
624
624
|
config, tracer = invoke_test_file 'spec/fixtures/hook/compare.rb' do
|
|
625
625
|
expect(Compare.compare('string', 'string')).to be_truthy
|
|
626
626
|
end
|
|
627
|
-
cm = AppMap::ClassMap.build_from_methods(config, tracer.event_methods)
|
|
627
|
+
cm = AppMap::Util.sanitize_paths(AppMap::ClassMap.build_from_methods(config, tracer.event_methods))
|
|
628
628
|
entry = cm[1][:children][0][:children][0][:children][0]
|
|
629
629
|
# Sanity check, make sure we got the right one
|
|
630
630
|
expect(entry[:name]).to eq('secure_compare')
|
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.34.
|
|
4
|
+
version: 0.34.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kevin Gilpin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-09-
|
|
11
|
+
date: 2020-09-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -276,6 +276,20 @@ dependencies:
|
|
|
276
276
|
- - ">="
|
|
277
277
|
- !ruby/object:Gem::Version
|
|
278
278
|
version: '0'
|
|
279
|
+
- !ruby/object:Gem::Dependency
|
|
280
|
+
name: hashie
|
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
|
282
|
+
requirements:
|
|
283
|
+
- - ">="
|
|
284
|
+
- !ruby/object:Gem::Version
|
|
285
|
+
version: '0'
|
|
286
|
+
type: :development
|
|
287
|
+
prerelease: false
|
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
289
|
+
requirements:
|
|
290
|
+
- - ">="
|
|
291
|
+
- !ruby/object:Gem::Version
|
|
292
|
+
version: '0'
|
|
279
293
|
description:
|
|
280
294
|
email:
|
|
281
295
|
- kgilpin@gmail.com
|