appmap 0.23.0 → 0.25.0

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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +17 -8
  4. data/.travis.yml +6 -0
  5. data/CHANGELOG.md +19 -0
  6. data/README.md +29 -12
  7. data/Rakefile +3 -3
  8. data/appmap.gemspec +3 -1
  9. data/exe/appmap +6 -18
  10. data/lib/appmap.rb +47 -6
  11. data/lib/appmap/algorithm/prune_class_map.rb +2 -0
  12. data/lib/appmap/algorithm/stats.rb +4 -2
  13. data/lib/appmap/class_map.rb +143 -0
  14. data/lib/appmap/command/record.rb +8 -6
  15. data/lib/appmap/command/stats.rb +2 -0
  16. data/lib/appmap/command/upload.rb +4 -2
  17. data/lib/appmap/event.rb +168 -0
  18. data/lib/appmap/hook.rb +151 -0
  19. data/lib/appmap/middleware/remote_recording.rb +14 -20
  20. data/lib/appmap/rails/action_handler.rb +10 -6
  21. data/lib/appmap/rails/sql_handler.rb +10 -8
  22. data/lib/appmap/railtie.rb +31 -18
  23. data/lib/appmap/rspec.rb +238 -261
  24. data/lib/appmap/trace.rb +88 -0
  25. data/lib/appmap/version.rb +1 -1
  26. data/package-lock.json +90 -92
  27. data/spec/abstract_controller4_base_spec.rb +1 -1
  28. data/spec/abstract_controller_base_spec.rb +7 -3
  29. data/spec/config_spec.rb +25 -0
  30. data/spec/fixtures/hook/attr_accessor.rb +5 -0
  31. data/spec/fixtures/hook/class_method.rb +17 -0
  32. data/spec/fixtures/hook/constructor.rb +7 -0
  33. data/spec/fixtures/hook/exception_method.rb +11 -0
  34. data/spec/fixtures/hook/instance_method.rb +23 -0
  35. data/spec/fixtures/rails4_users_app/app/controllers/api/users_controller.rb +3 -3
  36. data/spec/fixtures/rails4_users_app/config/database.yml +2 -1
  37. data/spec/fixtures/rails4_users_app/docker-compose.yml +2 -0
  38. data/spec/fixtures/rails_users_app/.ruby-version +1 -1
  39. data/spec/fixtures/rails_users_app/app/controllers/api/users_controller.rb +2 -2
  40. data/spec/fixtures/rails_users_app/config/database.yml +2 -1
  41. data/spec/fixtures/rails_users_app/create_app +1 -0
  42. data/spec/fixtures/rails_users_app/docker-compose.yml +4 -0
  43. data/spec/fixtures/rails_users_app/spec/models/user_spec.rb +1 -1
  44. data/spec/hook_spec.rb +357 -0
  45. data/spec/rails_spec_helper.rb +25 -16
  46. data/spec/railtie_spec.rb +1 -1
  47. data/spec/record_sql_rails_pg_spec.rb +1 -2
  48. data/spec/remote_recording_spec.rb +117 -0
  49. data/spec/spec_helper.rb +1 -0
  50. data/test/cli_test.rb +7 -36
  51. data/test/fixtures/cli_record_test/appmap.yml +2 -1
  52. data/test/fixtures/cli_record_test/lib/cli_record_test/main.rb +4 -2
  53. data/test/test_helper.rb +0 -42
  54. metadata +46 -62
  55. data/exe/_appmap-record-self +0 -49
  56. data/lib/appmap/command/inspect.rb +0 -14
  57. data/lib/appmap/config.rb +0 -65
  58. data/lib/appmap/config/directory.rb +0 -65
  59. data/lib/appmap/config/file.rb +0 -13
  60. data/lib/appmap/config/named_function.rb +0 -21
  61. data/lib/appmap/config/package_dir.rb +0 -52
  62. data/lib/appmap/config/path.rb +0 -25
  63. data/lib/appmap/feature.rb +0 -262
  64. data/lib/appmap/inspect.rb +0 -91
  65. data/lib/appmap/inspect/inspector.rb +0 -99
  66. data/lib/appmap/inspect/parse_node.rb +0 -170
  67. data/lib/appmap/inspect/parser.rb +0 -15
  68. data/lib/appmap/parser.rb +0 -60
  69. data/lib/appmap/rspec/parse_node.rb +0 -41
  70. data/lib/appmap/rspec/parser.rb +0 -15
  71. data/lib/appmap/trace/event_handler/rack_handler_webrick.rb +0 -65
  72. data/lib/appmap/trace/tracer.rb +0 -356
  73. data/spec/fixtures/rails_users_app/bin/_appmap-record-self +0 -29
  74. data/spec/rack_handler_webrick_spec.rb +0 -59
  75. data/test/config_test.rb +0 -149
  76. data/test/explict_inspect_test.rb +0 -29
  77. data/test/fixtures/active_record_like/active_record.rb +0 -2
  78. data/test/fixtures/active_record_like/active_record/aggregations.rb +0 -4
  79. data/test/fixtures/active_record_like/active_record/association.rb +0 -4
  80. data/test/fixtures/active_record_like/active_record/associations/join_dependency.rb +0 -6
  81. data/test/fixtures/active_record_like/active_record/associations/join_dependency/join_base.rb +0 -8
  82. data/test/fixtures/active_record_like/active_record/associations/join_dependency/join_part.rb +0 -8
  83. data/test/fixtures/active_record_like/active_record/caps/caps.rb +0 -4
  84. data/test/fixtures/ignore_non_ruby_file/class.rb +0 -3
  85. data/test/fixtures/ignore_non_ruby_file/non-ruby.txt +0 -1
  86. data/test/fixtures/includes_excludes/lib/a/a_1.rb +0 -6
  87. data/test/fixtures/includes_excludes/lib/a/a_2.rb +0 -6
  88. data/test/fixtures/includes_excludes/lib/a/x/x_1.rb +0 -8
  89. data/test/fixtures/includes_excludes/lib/b/b_1.rb +0 -6
  90. data/test/fixtures/includes_excludes/lib/root_1.rb +0 -4
  91. data/test/fixtures/inspect_multiple_subdirs/module_a.rb +0 -2
  92. data/test/fixtures/inspect_multiple_subdirs/module_a/class_a.rb +0 -5
  93. data/test/fixtures/inspect_multiple_subdirs/module_b.rb +0 -2
  94. data/test/fixtures/inspect_multiple_subdirs/module_b/class_b.rb +0 -5
  95. data/test/fixtures/inspect_multiple_subdirs/module_b/class_c.rb +0 -5
  96. data/test/fixtures/inspect_package/module_a/module_b/class_in_module.rb +0 -6
  97. data/test/fixtures/parse_file/defs_static_function.rb +0 -96
  98. data/test/fixtures/parse_file/function_within_class.rb +0 -36
  99. data/test/fixtures/parse_file/include_public_methods.rb +0 -127
  100. data/test/fixtures/parse_file/instance_function.rb +0 -17
  101. data/test/fixtures/parse_file/modules.rb +0 -71
  102. data/test/fixtures/parse_file/sclass_static_function.rb +0 -88
  103. data/test/fixtures/parse_file/toplevel_class.rb +0 -13
  104. data/test/fixtures/parse_file/toplevel_function.rb +0 -14
  105. data/test/fixtures/trace_test/trace_program_1.rb +0 -44
  106. data/test/implicit_inspect_test.rb +0 -33
  107. data/test/include_exclude_test.rb +0 -48
  108. data/test/prerecorded_trace_test.rb +0 -76
  109. data/test/trace_test.rb +0 -92
@@ -3,7 +3,7 @@ require 'open3'
3
3
 
4
4
  def wait_for_container(app_name)
5
5
  start_time = Time.now
6
- until (`docker-compose ps -q --filter health=healthy #{app_name}`.strip) != ''
6
+ until `docker-compose ps -q --filter health=healthy #{app_name}`.strip != ''
7
7
  elapsed = Time.now - start_time
8
8
  raise "Timeout waiting for container #{app_name} to be ready" if elapsed > 10
9
9
 
@@ -12,31 +12,40 @@ def wait_for_container(app_name)
12
12
  end
13
13
  end
14
14
 
15
- def run_cmd(*cmd)
16
- out,s = Open3.capture2e(*cmd)
17
- unless s.success?
18
- $stderr.puts <<~END
19
- Command failed:
20
- #{cmd}
21
- <<< Output:
22
- #{out}
23
- >>> End of output
24
- END
25
- raise 'Command failed'
26
- end
15
+ def run_cmd(*cmd, &failed)
16
+ out, status = Open3.capture2e(*cmd)
17
+ return [ out, status ] if status.success?
18
+
19
+ warn <<~WARNING
20
+ Command failed:
21
+ #{cmd}
22
+ <<< Output:
23
+ #{out}
24
+ >>> End of output
25
+ WARNING
26
+ failed&.call
27
+ raise 'Command failed'
27
28
  end
28
29
 
29
30
  shared_context 'Rails app pg database' do
30
31
  before(:all) do
31
- raise "you must set @fixure_dir" unless @fixture_dir
32
-
32
+ raise 'you must set @fixure_dir' unless @fixture_dir
33
+
34
+ print_pg_logs = lambda do
35
+ logs, = run_cmd 'docker-compose logs pg'
36
+ puts "docker-compose logs for pg:"
37
+ puts
38
+ puts logs
39
+ end
40
+
33
41
  Dir.chdir @fixture_dir do
42
+ run_cmd 'docker-compose down -v'
34
43
  cmd = 'docker-compose up -d pg'
35
44
  run_cmd cmd
36
45
  wait_for_container 'pg'
37
46
 
38
47
  cmd = 'docker-compose run --rm app ./create_app'
39
- run_cmd cmd
48
+ run_cmd cmd, &print_pg_logs
40
49
  end
41
50
  end
42
51
 
data/spec/railtie_spec.rb CHANGED
@@ -32,7 +32,7 @@ describe 'AppMap tracer via Railtie' do
32
32
  describe 'with APPMAP=true' do
33
33
  let(:env) { { 'APPMAP' => 'true' } }
34
34
  it 'is enabled' do
35
- expect(command_output).to eq('true')
35
+ expect(command_output.split("\n")).to include('true')
36
36
  end
37
37
  context 'and RAILS_ENV=test' do
38
38
  let(:env) { { 'APPMAP' => 'true', 'RAILS_ENV' => 'test' } }
@@ -3,13 +3,12 @@ require 'rails_spec_helper'
3
3
  describe 'Record SQL queries in a Rails app' do
4
4
  before(:all) { @fixture_dir = 'spec/fixtures/rails_users_app' }
5
5
  include_context 'Rails app pg database'
6
-
6
+
7
7
  around(:each) do |example|
8
8
  FileUtils.rm_rf tmpdir
9
9
  FileUtils.mkdir_p tmpdir
10
10
  cmd = "docker-compose run --rm -e ORM_MODULE=#{orm_module} -e APPMAP=true -v #{File.absolute_path tmpdir}:/app/tmp app ./bin/rspec spec/controllers/users_controller_api_spec.rb:#{test_line_number}"
11
11
  run_cmd cmd, chdir: @fixture_dir
12
-
13
12
 
14
13
  example.run
15
14
  end
@@ -0,0 +1,117 @@
1
+ require 'rails_spec_helper'
2
+ require 'net/http'
3
+ require 'socket'
4
+
5
+ describe 'remote recording', :order => :defined do
6
+ before(:all) { @fixture_dir = 'spec/fixtures/rails_users_app' }
7
+ include_context 'Rails app pg database'
8
+
9
+ before(:all) do
10
+ start_cmd = 'docker-compose up -d app'
11
+ run_cmd({ 'ORM_MODULE' => 'sequel', 'APPMAP' => 'true' }, start_cmd, chdir: @fixture_dir)
12
+ Dir.chdir @fixture_dir do
13
+ wait_for_container 'app'
14
+ end
15
+
16
+ port_cmd = 'docker-compose port app 3000'
17
+ port_out, = run_cmd port_cmd, chdir: @fixture_dir
18
+ @service_port = port_out.strip.split(':')[1]
19
+
20
+ service_running = false
21
+ retry_count = 0
22
+ uri = URI("http://localhost:#{@service_port}/health")
23
+
24
+ until service_running
25
+ sleep(0.25)
26
+ begin
27
+ res = Net::HTTP.start(uri.hostname, uri.port) do |http|
28
+ http.request(Net::HTTP::Get.new(uri))
29
+ end
30
+
31
+ status = res.response.code.to_i
32
+ service_running = true if status >= 200 && status < 300
33
+
34
+ # give up after a certain error threshold is met
35
+ # we don't want to wait forever if there's an unrecoverable issue
36
+ raise 'gave up waiting on fixture service' if (retry_count += 1) == 10
37
+ rescue Errno::ETIMEDOUT, Errno::ECONNRESET, EOFError
38
+ $stderr.print('.')
39
+ end
40
+ end
41
+ end
42
+
43
+ def json_body(res)
44
+ JSON.parse(res.body).deep_symbolize_keys
45
+ end
46
+
47
+ after(:all) do
48
+ run_cmd 'docker-compose rm -fs app', chdir: @fixture_dir
49
+ end
50
+
51
+ let(:service_address) { URI("http://localhost:#{@service_port}") }
52
+ let(:users_path) { '/users' }
53
+ let(:record_path) { '/_appmap/record' }
54
+
55
+ it 'returns the recording status' do
56
+ res = Net::HTTP.start(service_address.hostname, service_address.port) { |http|
57
+ http.request(Net::HTTP::Get.new(record_path))
58
+ }
59
+
60
+ expect(res).to be_a(Net::HTTPOK)
61
+ expect(res['Content-Type']).to eq('application/json')
62
+ expect(json_body(res)).to eq(enabled: false)
63
+ end
64
+
65
+ it 'starts a new recording session' do
66
+ res = Net::HTTP.start(service_address.hostname, service_address.port) { |http|
67
+ http.request(Net::HTTP::Post.new(record_path))
68
+ }
69
+
70
+ expect(res).to be_a(Net::HTTPOK)
71
+ end
72
+
73
+ it 'reflects the recording status' do
74
+ res = Net::HTTP.start(service_address.hostname, service_address.port) { |http|
75
+ http.request(Net::HTTP::Get.new(record_path))
76
+ }
77
+
78
+ expect(res).to be_a(Net::HTTPOK)
79
+ expect(res['Content-Type']).to eq('application/json')
80
+ expect(json_body(res)).to eq(enabled: true)
81
+ end
82
+
83
+ it 'fails to start a new recording session while recording is already active' do
84
+ res = Net::HTTP.start(service_address.hostname, service_address.port) { |http|
85
+ http.request(Net::HTTP::Post.new(record_path))
86
+ }
87
+
88
+ expect(res).to be_a(Net::HTTPConflict)
89
+ end
90
+
91
+ it 'stops recording' do
92
+ # Generate some events
93
+ Net::HTTP.start(service_address.hostname, service_address.port) { |http|
94
+ http.request(Net::HTTP::Get.new(users_path) )
95
+ }
96
+
97
+ res = Net::HTTP.start(service_address.hostname, service_address.port) { |http|
98
+ http.request(Net::HTTP::Delete.new(record_path))
99
+ }
100
+
101
+ expect(res).to be_a(Net::HTTPOK)
102
+ expect(res['Content-Type']).to eq('application/json')
103
+
104
+ data = json_body(res)
105
+ expect(data[:metadata]).to be_truthy
106
+ expect(data[:classMap].length).to be > 0
107
+ expect(data[:events].length).to be > 0
108
+ end
109
+
110
+ it 'fails to stop recording if there is no active recording session' do
111
+ res = Net::HTTP.start(service_address.hostname, service_address.port) { |http|
112
+ http.request(Net::HTTP::Delete.new(record_path))
113
+ }
114
+
115
+ expect(res).to be_a(Net::HTTPNotFound)
116
+ end
117
+ end
data/spec/spec_helper.rb CHANGED
@@ -4,3 +4,4 @@ require 'json'
4
4
  require 'yaml'
5
5
  require 'English'
6
6
  require 'webdrivers/chromedriver'
7
+ require 'appmap'
data/test/cli_test.rb CHANGED
@@ -13,40 +13,6 @@ class CLITest < Minitest::Test
13
13
  FileUtils.rm_f STATS_OUTPUT_FILENAME
14
14
  end
15
15
 
16
- def test_config_file_must_exist
17
- output = `./exe/appmap -c foobar inspect 2>&1`
18
-
19
- assert_equal 1, $CHILD_STATUS.exitstatus
20
- assert_includes output, 'No such file or directory'
21
- assert_includes output, 'foobar'
22
- end
23
-
24
- def test_inspect_to_file
25
- `./exe/appmap inspect -o #{OUTPUT_FILENAME}`
26
-
27
- assert_equal 0, $CHILD_STATUS.exitstatus
28
- assert File.file?(OUTPUT_FILENAME), "#{OUTPUT_FILENAME} does not exist"
29
- end
30
-
31
- def test_inspect_to_stdout
32
- output = `./exe/appmap inspect -o -`
33
-
34
- assert !File.file?(OUTPUT_FILENAME), "#{OUTPUT_FILENAME} should not exist"
35
-
36
- assert_equal 0, $CHILD_STATUS.exitstatus
37
- assert !output.blank?, 'Output should exist in stdout'
38
- end
39
-
40
- def test_inspect_fields
41
- output = `./exe/appmap inspect -o -`
42
-
43
- output = JSON.parse(output)
44
- assert_includes output.keys, 'version'
45
- assert_includes output.keys, 'classMap'
46
- assert_includes output.keys, 'metadata'
47
- assert !output.keys.include?('events')
48
- end
49
-
50
16
  def test_record
51
17
  output = Dir.chdir 'test/fixtures/cli_record_test' do
52
18
  `#{File.expand_path '../exe/appmap', __dir__} record -o #{OUTPUT_FILENAME} ./lib/cli_record_test/main.rb`.strip
@@ -141,12 +107,17 @@ class CLITest < Minitest::Test
141
107
  end
142
108
 
143
109
  assert_equal 0, $CHILD_STATUS.exitstatus
144
- assert_includes output, %("location":"lib/cli_record_test")
110
+ # Event path
111
+ assert_includes output, %("path":"lib/cli_record_test/main.rb")
112
+ # Function location
113
+ assert_includes output, %("location":"lib/cli_record_test/main.rb:3")
145
114
  assert !File.file?(OUTPUT_FILENAME), "#{OUTPUT_FILENAME} should not exist"
146
115
  end
147
116
 
148
117
  def test_upload
149
- `./exe/appmap inspect -o #{OUTPUT_FILENAME}`
118
+ Dir.chdir 'test/fixtures/cli_record_test' do
119
+ `#{File.expand_path '../exe/appmap', __dir__} record -o #{OUTPUT_FILENAME} ./lib/cli_record_test/main.rb`
120
+ end
150
121
 
151
122
  upload_output = `./exe/appmap upload --no-open #{OUTPUT_FILENAME}`
152
123
  assert_equal 0, $CHILD_STATUS.exitstatus
@@ -1,2 +1,3 @@
1
+ name: cli_record_test
1
2
  packages:
2
- - path: lib/cli_record_test
3
+ - path: lib
@@ -1,6 +1,8 @@
1
1
  class Main
2
- def Main.say_hello
3
- puts 'Hello'
2
+ class << self
3
+ def say_hello
4
+ puts 'Hello'
5
+ end
4
6
  end
5
7
  end
6
8
 
data/test/test_helper.rb CHANGED
@@ -2,45 +2,3 @@ $LOAD_PATH.unshift File.expand_path('../lib', __dir__)
2
2
  require 'appmap'
3
3
 
4
4
  require 'minitest/autorun'
5
-
6
- FIXTURE_DIR = File.join(__dir__, 'fixtures')
7
- PARSE_FILE_FIXTURE_DIR = File.join(FIXTURE_DIR, 'parse_file')
8
- INSPECT_PACKAGE_FIXTURE_DIR = File.join(FIXTURE_DIR, 'inspect_package')
9
-
10
- module FixturePath
11
- def parse_fixture_file(path)
12
- File.join(FIXTURE_DIR, 'parse_file', path)
13
- end
14
- end
15
-
16
- module FixtureFile
17
- include FixturePath
18
-
19
- def assert_fixture_features(strategy, path)
20
- require 'appmap/inspect'
21
-
22
- features = Array(AppMap::Inspect.inspect_file(strategy, file_path: parse_fixture_file(path)))
23
-
24
- fixup_fixture_path = lambda do |a|
25
- a.location = a.location.gsub(PARSE_FILE_FIXTURE_DIR, '$FIXTURE_DIR')
26
- a.children.each(&fixup_fixture_path)
27
- end
28
- features.each(&fixup_fixture_path)
29
-
30
- expectation = JSON.parse(`ruby #{parse_fixture_file(path)}`)
31
- expectation = expectation[strategy.to_s] \
32
- if expectation.is_a?(Hash) && expectation[strategy.to_s]
33
- warn JSON.pretty_generate(features.map(&:to_h)) if ENV['DEBUG']
34
- assert_equal JSON.pretty_generate(expectation),
35
- JSON.pretty_generate(features.map(&:to_h))
36
- end
37
- end
38
-
39
- # Verify that the fixture files are valid
40
- Dir.new(PARSE_FILE_FIXTURE_DIR)
41
- .entries
42
- .select { |e| File.file?(File.join(PARSE_FILE_FIXTURE_DIR, e)) && e.index('.rb') == e.size - 3 }
43
- .each do |e|
44
- fname = File.join(PARSE_FILE_FIXTURE_DIR, e)
45
- raise "Fixture #{fname.inspect} is not valid" unless system("ruby #{fname} > /dev/null")
46
- end
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.23.0
4
+ version: 0.25.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: 2020-01-27 00:00:00.000000000 Z
11
+ date: 2020-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -112,16 +112,16 @@ dependencies:
112
112
  name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '10.0'
117
+ version: 12.3.3
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: '10.0'
124
+ version: 12.3.3
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rdoc
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: climate_control
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -150,6 +164,20 @@ dependencies:
150
164
  - - ">="
151
165
  - !ruby/object:Gem::Version
152
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: diffy
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: launchy
155
183
  requirement: !ruby/object:Gem::Requirement
@@ -210,7 +238,6 @@ description:
210
238
  email:
211
239
  - kgilpin@gmail.com
212
240
  executables:
213
- - _appmap-record-self
214
241
  - appmap
215
242
  extensions: []
216
243
  extra_rdoc_files: []
@@ -235,36 +262,22 @@ files:
235
262
  - examples/mock_webapp/lib/mock_webapp/controller.rb
236
263
  - examples/mock_webapp/lib/mock_webapp/request.rb
237
264
  - examples/mock_webapp/lib/mock_webapp/user.rb
238
- - exe/_appmap-record-self
239
265
  - exe/appmap
240
266
  - lib/appmap.rb
241
267
  - lib/appmap/algorithm/prune_class_map.rb
242
268
  - lib/appmap/algorithm/stats.rb
243
- - lib/appmap/command/inspect.rb
269
+ - lib/appmap/class_map.rb
244
270
  - lib/appmap/command/record.rb
245
271
  - lib/appmap/command/stats.rb
246
272
  - lib/appmap/command/upload.rb
247
- - lib/appmap/config.rb
248
- - lib/appmap/config/directory.rb
249
- - lib/appmap/config/file.rb
250
- - lib/appmap/config/named_function.rb
251
- - lib/appmap/config/package_dir.rb
252
- - lib/appmap/config/path.rb
253
- - lib/appmap/feature.rb
254
- - lib/appmap/inspect.rb
255
- - lib/appmap/inspect/inspector.rb
256
- - lib/appmap/inspect/parse_node.rb
257
- - lib/appmap/inspect/parser.rb
273
+ - lib/appmap/event.rb
274
+ - lib/appmap/hook.rb
258
275
  - lib/appmap/middleware/remote_recording.rb
259
- - lib/appmap/parser.rb
260
276
  - lib/appmap/rails/action_handler.rb
261
277
  - lib/appmap/rails/sql_handler.rb
262
278
  - lib/appmap/railtie.rb
263
279
  - lib/appmap/rspec.rb
264
- - lib/appmap/rspec/parse_node.rb
265
- - lib/appmap/rspec/parser.rb
266
- - lib/appmap/trace/event_handler/rack_handler_webrick.rb
267
- - lib/appmap/trace/tracer.rb
280
+ - lib/appmap/trace.rb
268
281
  - lib/appmap/version.rb
269
282
  - lore/pages/2019-05-21-install-and-record/index.pug
270
283
  - lore/pages/2019-05-21-install-and-record/install_example_appmap.png
@@ -287,6 +300,12 @@ files:
287
300
  - package.json
288
301
  - spec/abstract_controller4_base_spec.rb
289
302
  - spec/abstract_controller_base_spec.rb
303
+ - spec/config_spec.rb
304
+ - spec/fixtures/hook/attr_accessor.rb
305
+ - spec/fixtures/hook/class_method.rb
306
+ - spec/fixtures/hook/constructor.rb
307
+ - spec/fixtures/hook/exception_method.rb
308
+ - spec/fixtures/hook/instance_method.rb
290
309
  - spec/fixtures/rack_users_app/.dockerignore
291
310
  - spec/fixtures/rack_users_app/.gitignore
292
311
  - spec/fixtures/rack_users_app/Dockerfile
@@ -378,7 +397,6 @@ files:
378
397
  - spec/fixtures/rails_users_app/app/views/layouts/application.html.haml
379
398
  - spec/fixtures/rails_users_app/app/views/users/index.html.haml
380
399
  - spec/fixtures/rails_users_app/appmap.yml
381
- - spec/fixtures/rails_users_app/bin/_appmap-record-self
382
400
  - spec/fixtures/rails_users_app/bin/appmap
383
401
  - spec/fixtures/rails_users_app/bin/byebug
384
402
  - spec/fixtures/rails_users_app/bin/gli
@@ -427,59 +445,25 @@ files:
427
445
  - spec/fixtures/rails_users_app/spec/rails_helper.rb
428
446
  - spec/fixtures/rails_users_app/spec/spec_helper.rb
429
447
  - spec/fixtures/rails_users_app/users_app/.gitignore
430
- - spec/rack_handler_webrick_spec.rb
448
+ - spec/hook_spec.rb
431
449
  - spec/rails_spec_helper.rb
432
450
  - spec/railtie_spec.rb
433
451
  - spec/record_sql_rails4_pg_spec.rb
434
452
  - spec/record_sql_rails_pg_spec.rb
453
+ - spec/remote_recording_spec.rb
435
454
  - spec/rspec_feature_metadata_spec.rb
436
455
  - spec/spec_helper.rb
437
456
  - test/cli_test.rb
438
- - test/config_test.rb
439
- - test/explict_inspect_test.rb
440
- - test/fixtures/active_record_like/active_record.rb
441
- - test/fixtures/active_record_like/active_record/aggregations.rb
442
- - test/fixtures/active_record_like/active_record/association.rb
443
- - test/fixtures/active_record_like/active_record/associations/join_dependency.rb
444
- - test/fixtures/active_record_like/active_record/associations/join_dependency/join_base.rb
445
- - test/fixtures/active_record_like/active_record/associations/join_dependency/join_part.rb
446
- - test/fixtures/active_record_like/active_record/caps/caps.rb
447
457
  - test/fixtures/cli_record_test/appmap.yml
448
458
  - test/fixtures/cli_record_test/lib/cli_record_test/main.rb
449
- - test/fixtures/ignore_non_ruby_file/class.rb
450
- - test/fixtures/ignore_non_ruby_file/non-ruby.txt
451
- - test/fixtures/includes_excludes/lib/a/a_1.rb
452
- - test/fixtures/includes_excludes/lib/a/a_2.rb
453
- - test/fixtures/includes_excludes/lib/a/x/x_1.rb
454
- - test/fixtures/includes_excludes/lib/b/b_1.rb
455
- - test/fixtures/includes_excludes/lib/root_1.rb
456
- - test/fixtures/inspect_multiple_subdirs/module_a.rb
457
- - test/fixtures/inspect_multiple_subdirs/module_a/class_a.rb
458
- - test/fixtures/inspect_multiple_subdirs/module_b.rb
459
- - test/fixtures/inspect_multiple_subdirs/module_b/class_b.rb
460
- - test/fixtures/inspect_multiple_subdirs/module_b/class_c.rb
461
- - test/fixtures/inspect_package/module_a/module_b/class_in_module.rb
462
- - test/fixtures/parse_file/defs_static_function.rb
463
- - test/fixtures/parse_file/function_within_class.rb
464
- - test/fixtures/parse_file/include_public_methods.rb
465
- - test/fixtures/parse_file/instance_function.rb
466
- - test/fixtures/parse_file/modules.rb
467
- - test/fixtures/parse_file/sclass_static_function.rb
468
- - test/fixtures/parse_file/toplevel_class.rb
469
- - test/fixtures/parse_file/toplevel_function.rb
470
459
  - test/fixtures/rspec_recorder/Gemfile
471
460
  - test/fixtures/rspec_recorder/appmap.yml
472
461
  - test/fixtures/rspec_recorder/lib/hello.rb
473
462
  - test/fixtures/rspec_recorder/spec/decorated_hello_spec.rb
474
463
  - test/fixtures/rspec_recorder/spec/labeled_hello_spec.rb
475
464
  - test/fixtures/rspec_recorder/spec/plain_hello_spec.rb
476
- - test/fixtures/trace_test/trace_program_1.rb
477
- - test/implicit_inspect_test.rb
478
- - test/include_exclude_test.rb
479
- - test/prerecorded_trace_test.rb
480
465
  - test/rspec_test.rb
481
466
  - test/test_helper.rb
482
- - test/trace_test.rb
483
467
  homepage: https://github.com/applandinc/appmap-ruby
484
468
  licenses:
485
469
  - MIT