appmap 0.35.2 → 0.39.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.dockerignore +1 -1
- data/.gitignore +2 -1
- data/.rubocop.yml +15 -1
- data/.travis.yml +0 -7
- data/CHANGELOG.md +22 -0
- data/README.md +24 -12
- data/Rakefile +3 -2
- data/appmap.gemspec +2 -1
- data/appmap.yml +1 -7
- data/lib/appmap.rb +2 -2
- data/lib/appmap/class_map.rb +20 -6
- data/lib/appmap/config.rb +66 -22
- data/lib/appmap/event.rb +16 -1
- data/lib/appmap/hook/method.rb +18 -12
- data/lib/appmap/rails/request_handler.rb +20 -4
- data/lib/appmap/railtie.rb +1 -1
- data/lib/appmap/rspec.rb +1 -1
- data/lib/appmap/trace.rb +18 -7
- data/lib/appmap/version.rb +2 -2
- data/spec/abstract_controller4_base_spec.rb +27 -28
- data/spec/abstract_controller_base_spec.rb +132 -67
- data/spec/class_map_spec.rb +36 -0
- data/spec/fixtures/hook/instance_method.rb +4 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/.dockerignore +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/.gitignore +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/.rspec +0 -0
- data/{.ruby-version → spec/fixtures/rails5_users_app/.ruby-version} +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/Dockerfile +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/Dockerfile.pg +0 -0
- data/spec/fixtures/rails5_users_app/Gemfile +51 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/Rakefile +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/api/users_controller.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/application_controller.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/concerns/.keep +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/health_controller.rb +0 -0
- data/spec/fixtures/rails5_users_app/app/controllers/users_controller.rb +13 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/models/activerecord/user.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/models/concerns/.keep +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/models/sequel/user.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/views/layouts/application.html.haml +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/views/users/index.html.haml +0 -0
- data/spec/fixtures/rails5_users_app/appmap.yml +4 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/appmap +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/byebug +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/gli +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/htmldiff +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/ldiff +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/nokogiri +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/rackup +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/rails +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/rake +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/rspec +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/ruby-parse +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/ruby-rewrite +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/sequel +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/setup +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/sprockets +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/thor +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/update +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config.ru +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/application.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/boot.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/credentials.yml.enc +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/database.yml +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/environment.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/environments/development.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/environments/production.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/environments/test.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/application_controller_renderer.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/backtrace_silencers.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/cors.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/filter_parameter_logging.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/inflections.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/mime_types.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/record_button.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/wrap_parameters.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/locales/en.yml +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/routes.rb +1 -1
- data/spec/fixtures/{rails_users_app → rails5_users_app}/create_app +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/db/migrate/20190728211408_create_users.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/db/schema.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/docker-compose.yml +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/features/api_users.feature +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/features/support/env.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/features/support/hooks.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/features/support/steps.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/lib/tasks/.keep +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/log/.keep +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/public/robots.txt +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/spec/controllers/users_controller_api_spec.rb +1 -1
- data/spec/fixtures/rails5_users_app/spec/controllers/users_controller_spec.rb +27 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/spec/models/user_spec.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/spec/rails_helper.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/spec/spec_helper.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/users_app/.gitignore +0 -0
- data/spec/fixtures/rails6_users_app/.dockerignore +1 -0
- data/spec/fixtures/rails6_users_app/.gitignore +39 -0
- data/spec/fixtures/rails6_users_app/.rspec +1 -0
- data/spec/fixtures/{rails_users_app → rails6_users_app}/.ruby-version +0 -0
- data/spec/fixtures/rails6_users_app/Dockerfile +29 -0
- data/spec/fixtures/rails6_users_app/Dockerfile.pg +3 -0
- data/spec/fixtures/{rails_users_app → rails6_users_app}/Gemfile +1 -1
- data/spec/fixtures/rails6_users_app/Rakefile +6 -0
- data/spec/fixtures/rails6_users_app/app/controllers/api/users_controller.rb +27 -0
- data/spec/fixtures/rails6_users_app/app/controllers/application_controller.rb +2 -0
- data/spec/fixtures/rails6_users_app/app/controllers/concerns/.keep +0 -0
- data/spec/fixtures/rails6_users_app/app/controllers/health_controller.rb +5 -0
- data/spec/fixtures/rails6_users_app/app/controllers/users_controller.rb +13 -0
- data/spec/fixtures/rails6_users_app/app/models/activerecord/user.rb +18 -0
- data/spec/fixtures/rails6_users_app/app/models/concerns/.keep +0 -0
- data/spec/fixtures/rails6_users_app/app/models/sequel/user.rb +25 -0
- data/spec/fixtures/rails6_users_app/app/views/layouts/application.html.haml +7 -0
- data/spec/fixtures/rails6_users_app/app/views/users/index.html.haml +7 -0
- data/spec/fixtures/rails6_users_app/appmap.yml +5 -0
- data/spec/fixtures/rails6_users_app/bin/appmap +29 -0
- data/spec/fixtures/rails6_users_app/bin/byebug +29 -0
- data/spec/fixtures/rails6_users_app/bin/gli +29 -0
- data/spec/fixtures/rails6_users_app/bin/htmldiff +29 -0
- data/spec/fixtures/rails6_users_app/bin/ldiff +29 -0
- data/spec/fixtures/rails6_users_app/bin/nokogiri +29 -0
- data/spec/fixtures/rails6_users_app/bin/rackup +29 -0
- data/spec/fixtures/rails6_users_app/bin/rails +4 -0
- data/spec/fixtures/rails6_users_app/bin/rake +29 -0
- data/spec/fixtures/rails6_users_app/bin/rspec +29 -0
- data/spec/fixtures/rails6_users_app/bin/ruby-parse +29 -0
- data/spec/fixtures/rails6_users_app/bin/ruby-rewrite +29 -0
- data/spec/fixtures/rails6_users_app/bin/sequel +29 -0
- data/spec/fixtures/rails6_users_app/bin/setup +25 -0
- data/spec/fixtures/rails6_users_app/bin/sprockets +29 -0
- data/spec/fixtures/rails6_users_app/bin/thor +29 -0
- data/spec/fixtures/rails6_users_app/bin/update +25 -0
- data/spec/fixtures/rails6_users_app/config.ru +5 -0
- data/spec/fixtures/rails6_users_app/config/application.rb +51 -0
- data/spec/fixtures/rails6_users_app/config/boot.rb +3 -0
- data/spec/fixtures/rails6_users_app/config/credentials.yml.enc +1 -0
- data/spec/fixtures/rails6_users_app/config/database.yml +18 -0
- data/spec/fixtures/rails6_users_app/config/environment.rb +5 -0
- data/spec/fixtures/rails6_users_app/config/environments/development.rb +40 -0
- data/spec/fixtures/rails6_users_app/config/environments/production.rb +68 -0
- data/spec/fixtures/rails6_users_app/config/environments/test.rb +36 -0
- data/spec/fixtures/rails6_users_app/config/initializers/application_controller_renderer.rb +8 -0
- data/spec/fixtures/rails6_users_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/fixtures/rails6_users_app/config/initializers/cors.rb +16 -0
- data/spec/fixtures/rails6_users_app/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/fixtures/rails6_users_app/config/initializers/inflections.rb +16 -0
- data/spec/fixtures/rails6_users_app/config/initializers/mime_types.rb +4 -0
- data/spec/fixtures/rails6_users_app/config/initializers/record_button.rb +3 -0
- data/spec/fixtures/rails6_users_app/config/initializers/wrap_parameters.rb +9 -0
- data/spec/fixtures/rails6_users_app/config/locales/en.yml +33 -0
- data/spec/fixtures/rails6_users_app/config/routes.rb +11 -0
- data/spec/fixtures/rails6_users_app/create_app +27 -0
- data/spec/fixtures/rails6_users_app/db/migrate/20190728211408_create_users.rb +9 -0
- data/spec/fixtures/rails6_users_app/db/schema.rb +23 -0
- data/spec/fixtures/rails6_users_app/docker-compose.yml +28 -0
- data/spec/fixtures/rails6_users_app/features/api_users.feature +13 -0
- data/spec/fixtures/rails6_users_app/features/support/env.rb +4 -0
- data/spec/fixtures/rails6_users_app/features/support/hooks.rb +11 -0
- data/spec/fixtures/rails6_users_app/features/support/steps.rb +18 -0
- data/spec/fixtures/rails6_users_app/lib/tasks/.keep +0 -0
- data/spec/fixtures/rails6_users_app/log/.keep +0 -0
- data/spec/fixtures/rails6_users_app/public/robots.txt +1 -0
- data/spec/fixtures/rails6_users_app/spec/controllers/users_controller_api_spec.rb +29 -0
- data/spec/fixtures/rails6_users_app/spec/controllers/users_controller_spec.rb +27 -0
- data/spec/fixtures/rails6_users_app/spec/models/user_spec.rb +39 -0
- data/spec/fixtures/rails6_users_app/spec/rails_helper.rb +66 -0
- data/spec/fixtures/rails6_users_app/spec/spec_helper.rb +96 -0
- data/spec/fixtures/rails6_users_app/users_app/.gitignore +20 -0
- data/spec/hook_spec.rb +103 -22
- data/spec/rails_spec_helper.rb +5 -5
- data/spec/railtie_spec.rb +31 -32
- data/spec/record_sql_rails4_pg_spec.rb +47 -48
- data/spec/record_sql_rails_pg_spec.rb +62 -63
- data/spec/remote_recording_spec.rb +90 -89
- data/spec/rspec_feature_metadata_spec.rb +17 -18
- data/test/expectations/openssl_test_key_sign1.json +55 -0
- data/test/expectations/openssl_test_key_sign2.json +58 -0
- data/test/fixtures/gem_test/Gemfile +6 -0
- data/test/fixtures/gem_test/appmap.yml +3 -0
- data/test/fixtures/gem_test/test/to_param_test.rb +14 -0
- data/test/gem_test.rb +34 -0
- data/test/minitest_test.rb +2 -2
- data/test/openssl_test.rb +10 -117
- metadata +173 -80
- data/spec/fixtures/rails_users_app/app/controllers/users_controller.rb +0 -5
- data/spec/fixtures/rails_users_app/appmap.yml +0 -3
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe 'AppMap::ClassMap' do
|
6
|
+
describe '.build_from_methods' do
|
7
|
+
it 'includes source code if available' do
|
8
|
+
map = AppMap.class_map([scoped_method(method(:test_method))])
|
9
|
+
function = dig_map(map, 5)[0]
|
10
|
+
expect(function[:source]).to include 'test method body'
|
11
|
+
expect(function[:comment]).to include 'test method comment'
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'can omit source code even if available' do
|
15
|
+
map = AppMap.class_map([scoped_method((method :test_method))], include_source: false)
|
16
|
+
function = dig_map(map, 5)[0]
|
17
|
+
expect(function).to_not include(:source)
|
18
|
+
expect(function).to_not include(:comment)
|
19
|
+
end
|
20
|
+
|
21
|
+
# test method comment
|
22
|
+
def test_method
|
23
|
+
'test method body'
|
24
|
+
end
|
25
|
+
|
26
|
+
def scoped_method(method)
|
27
|
+
AppMap::Trace::ScopedMethod.new AppMap::Config::Package.new, method.receiver.class.name, method, false
|
28
|
+
end
|
29
|
+
|
30
|
+
def dig_map(map, depth)
|
31
|
+
return map if depth == 0
|
32
|
+
|
33
|
+
dig_map map[0][:children], depth - 1
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,51 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
3
|
+
|
4
|
+
gem 'rails', '~> 5'
|
5
|
+
|
6
|
+
gem 'haml-rails'
|
7
|
+
|
8
|
+
gem 'activerecord', require: false
|
9
|
+
gem 'pg'
|
10
|
+
gem 'sequel', '= 5.20.0', require: false
|
11
|
+
gem 'sequel-rails', require: false
|
12
|
+
gem 'sequel_secure_password', require: false
|
13
|
+
|
14
|
+
appmap_path = \
|
15
|
+
# Support debugging inside the container with volume-mounted source
|
16
|
+
if File.directory?('/src/appmap-ruby')
|
17
|
+
'/src/appmap-ruby'
|
18
|
+
elsif File.exist?('../../../appmap.gemspec')
|
19
|
+
'../../..'
|
20
|
+
end
|
21
|
+
|
22
|
+
if appmap_path
|
23
|
+
# Set the branch parameter, so that 'bundle config local.appmap' will work
|
24
|
+
appmap_branch = Dir.chdir appmap_path do
|
25
|
+
`git rev-parse --abbrev-ref HEAD`.strip
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
appmap_options = \
|
30
|
+
if appmap_path && appmap_branch
|
31
|
+
{ git: appmap_path, branch: appmap_branch }
|
32
|
+
elsif appmap_path
|
33
|
+
{ path: appmap_path }
|
34
|
+
else
|
35
|
+
{}
|
36
|
+
end.merge(require: %w[appmap appmap/railtie])
|
37
|
+
|
38
|
+
gem 'appmap', appmap_options
|
39
|
+
|
40
|
+
group :development, :test do
|
41
|
+
gem 'cucumber-rails', require: false
|
42
|
+
gem 'rspec-rails'
|
43
|
+
# Required for Sequel, since without ActiveRecord, the Rails transactional fixture support
|
44
|
+
# isn't activated.
|
45
|
+
gem 'database_cleaner'
|
46
|
+
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
47
|
+
gem 'pry-byebug'
|
48
|
+
end
|
49
|
+
|
50
|
+
group :development do
|
51
|
+
end
|
File without changes
|
data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/api/users_controller.rb
RENAMED
File without changes
|
data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/application_controller.rb
RENAMED
File without changes
|
File without changes
|
data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/health_controller.rb
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/fixtures/{rails_users_app → rails5_users_app}/app/views/layouts/application.html.haml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/backtrace_silencers.rb
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/record_button.rb
RENAMED
File without changes
|
data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/wrap_parameters.rb
RENAMED
File without changes
|
File without changes
|
File without changes
|
data/spec/fixtures/{rails_users_app → rails5_users_app}/db/migrate/20190728211408_create_users.rb
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -21,7 +21,7 @@ RSpec.describe Api::UsersController, feature_group: 'Users', type: :controller,
|
|
21
21
|
post :create, params: { login: 'alice' }
|
22
22
|
end
|
23
23
|
it 'lists the users' do
|
24
|
-
|
24
|
+
get :index, params: {}
|
25
25
|
users = JSON.parse(response.body)
|
26
26
|
expect(users.map { |r| r['login'] }).to include('alice')
|
27
27
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
require 'rack/test'
|
3
|
+
|
4
|
+
RSpec.describe UsersController, type: :controller do
|
5
|
+
render_views
|
6
|
+
|
7
|
+
describe 'GET /users', feature: 'Show all users' do
|
8
|
+
before do
|
9
|
+
User.create login: 'alice'
|
10
|
+
end
|
11
|
+
it 'lists the users' do
|
12
|
+
get :index
|
13
|
+
expect(response).to be_ok
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe 'GET /users/:login', feature: 'Show a user' do
|
18
|
+
before do
|
19
|
+
User.create login: 'alice'
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'shows the user' do
|
23
|
+
get :show, params: { id: 'alice' }
|
24
|
+
expect(response).to be_ok
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
Gemfile.lock
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
|
2
|
+
#
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
5
|
+
# git config --global core.excludesfile '~/.gitignore_global'
|
6
|
+
|
7
|
+
# Ignore bundler config.
|
8
|
+
/.bundle
|
9
|
+
vendor
|
10
|
+
|
11
|
+
# Ignore all logfiles and tempfiles.
|
12
|
+
/log/*
|
13
|
+
/tmp/*
|
14
|
+
!/log/.keep
|
15
|
+
!/tmp/.keep
|
16
|
+
|
17
|
+
# Ignore uploaded files in development
|
18
|
+
/storage/*
|
19
|
+
!/storage/.keep
|
20
|
+
|
21
|
+
/node_modules
|
22
|
+
/yarn-error.log
|
23
|
+
|
24
|
+
/public/assets
|
25
|
+
.byebug_history
|
26
|
+
|
27
|
+
# Ignore master key for decrypting credentials and more.
|
28
|
+
/config/master.key
|
29
|
+
|
30
|
+
# Other
|
31
|
+
.DS_Store
|
32
|
+
.appmap
|
33
|
+
appmap.json
|
34
|
+
appmap-recording-*.json
|
35
|
+
capybara-*.html
|
36
|
+
|
37
|
+
# appmap gem is pre-installed, don't lock to a version
|
38
|
+
Gemfile.lock
|
39
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper
|
File without changes
|
@@ -0,0 +1,29 @@
|
|
1
|
+
ARG GEM_VERSION
|
2
|
+
ARG RUBY_VERSION
|
3
|
+
|
4
|
+
FROM appmap:${GEM_VERSION} as appmap
|
5
|
+
|
6
|
+
FROM ruby:${RUBY_VERSION}
|
7
|
+
RUN apt-get update && apt-get install -y vim less
|
8
|
+
RUN apt-get install -y postgresql-client
|
9
|
+
|
10
|
+
RUN mkdir /app
|
11
|
+
WORKDIR /app
|
12
|
+
|
13
|
+
RUN gem install -N bundler
|
14
|
+
|
15
|
+
COPY Gemfile .
|
16
|
+
|
17
|
+
RUN bundle
|
18
|
+
RUN bundle binstubs bundler rspec-core --force
|
19
|
+
|
20
|
+
COPY . .
|
21
|
+
|
22
|
+
COPY --from=appmap /pkg/appmap.gem /tmp/
|
23
|
+
RUN gem install /tmp/appmap.gem && \
|
24
|
+
bundle update --local appmap && \
|
25
|
+
bundle binstubs appmap --force
|
26
|
+
|
27
|
+
EXPOSE 3000
|
28
|
+
|
29
|
+
HEALTHCHECK --interval=1s --retries=10 CMD curl --fail http://localhost:3000/health || exit 1
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Api
|
2
|
+
class UsersController < ActionController::API
|
3
|
+
def index
|
4
|
+
@users = User.all
|
5
|
+
render json: @users
|
6
|
+
end
|
7
|
+
|
8
|
+
def create
|
9
|
+
@user = build_user(params.slice(:login).to_unsafe_h)
|
10
|
+
unless @user.valid?
|
11
|
+
error = {
|
12
|
+
code: 'invalid',
|
13
|
+
target: 'User',
|
14
|
+
message: @user.errors.full_messages.join(', '),
|
15
|
+
details: @user.errors.map { |k, v| { code: 'invalid', target: k, message: Array(v).join(', ') } }
|
16
|
+
}
|
17
|
+
return render json: error, status: :unprocessable_entity
|
18
|
+
end
|
19
|
+
@user.save
|
20
|
+
render json: @user, status: :created
|
21
|
+
end
|
22
|
+
|
23
|
+
def build_user(params)
|
24
|
+
User.new(params)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|