appmap 0.77.3 → 0.79.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/.travis.yml +4 -23
  4. data/CHANGELOG.md +21 -0
  5. data/{spec/fixtures/rails5_users_app/Dockerfile.pg → Dockerfile.pg} +0 -0
  6. data/README.md +14 -44
  7. data/README_CI.md +0 -7
  8. data/Rakefile +12 -150
  9. data/appmap.gemspec +3 -2
  10. data/docker-compose.yml +10 -0
  11. data/ext/appmap/appmap.c +21 -2
  12. data/lib/appmap/builtin_hooks/ruby.yml +6 -3
  13. data/lib/appmap/handler/eval.rb +41 -0
  14. data/lib/appmap/handler/function.rb +8 -8
  15. data/lib/appmap/handler/net_http.rb +19 -18
  16. data/lib/appmap/handler/rails/request_handler.rb +3 -4
  17. data/lib/appmap/handler/rails/template.rb +68 -62
  18. data/lib/appmap/hook/method/ruby2.rb +56 -0
  19. data/lib/appmap/hook/method/ruby3.rb +56 -0
  20. data/lib/appmap/hook/method.rb +42 -98
  21. data/lib/appmap/hook.rb +2 -2
  22. data/lib/appmap/version.rb +1 -1
  23. data/spec/config_spec.rb +1 -1
  24. data/spec/depends/api_spec.rb +13 -5
  25. data/spec/depends/spec_helper.rb +0 -9
  26. data/spec/fixtures/database.yml +11 -0
  27. data/spec/fixtures/rails5_users_app/config/database.yml +1 -0
  28. data/spec/fixtures/rails6_users_app/Gemfile +1 -25
  29. data/spec/fixtures/rails6_users_app/config/database.yml +1 -0
  30. data/spec/fixtures/rails7_users_app/Gemfile +1 -25
  31. data/spec/fixtures/rails7_users_app/config/database.yml +1 -0
  32. data/spec/handler/eval_spec.rb +66 -0
  33. data/spec/hook_spec.rb +3 -3
  34. data/spec/rails_recording_spec.rb +4 -20
  35. data/spec/rails_spec_helper.rb +76 -63
  36. data/spec/rails_test_spec.rb +7 -17
  37. data/spec/railtie_spec.rb +4 -18
  38. data/spec/record_sql_rails_pg_spec.rb +44 -75
  39. data/spec/remote_recording_spec.rb +18 -30
  40. data/spec/spec_helper.rb +1 -0
  41. data/spec/swagger/swagger_spec.rb +1 -16
  42. data/spec/util_spec.rb +1 -1
  43. metadata +25 -21
  44. data/Dockerfile.appmap +0 -5
  45. data/spec/fixtures/rack_users_app/Dockerfile +0 -32
  46. data/spec/fixtures/rack_users_app/docker-compose.yml +0 -9
  47. data/spec/fixtures/rails5_users_app/Dockerfile +0 -29
  48. data/spec/fixtures/rails5_users_app/config/database.yml +0 -18
  49. data/spec/fixtures/rails5_users_app/create_app +0 -33
  50. data/spec/fixtures/rails5_users_app/docker-compose.yml +0 -31
  51. data/spec/fixtures/rails6_users_app/.ruby-version +0 -1
  52. data/spec/fixtures/rails6_users_app/Dockerfile +0 -44
  53. data/spec/fixtures/rails6_users_app/Dockerfile.pg +0 -3
  54. data/spec/fixtures/rails6_users_app/config/database.yml +0 -18
  55. data/spec/fixtures/rails6_users_app/create_app +0 -33
  56. data/spec/fixtures/rails6_users_app/docker-compose.yml +0 -31
  57. data/spec/fixtures/rails7_users_app/.ruby-version +0 -1
  58. data/spec/fixtures/rails7_users_app/Dockerfile +0 -30
  59. data/spec/fixtures/rails7_users_app/Dockerfile.pg +0 -3
  60. data/spec/fixtures/rails7_users_app/config/database.yml +0 -86
  61. data/spec/fixtures/rails7_users_app/create_app +0 -31
  62. data/spec/fixtures/rails7_users_app/docker-compose.yml +0 -31
@@ -4,24 +4,9 @@ describe 'rake appmap:swagger' do
4
4
  include_context 'Rails app pg database', "spec/fixtures/rails6_users_app" unless use_existing_data?
5
5
  include_context 'rails integration test setup'
6
6
 
7
- def run_spec(spec_name)
8
- cmd = <<~CMD.gsub "\n", ' '
9
- docker-compose run --rm -e RAILS_ENV=test -e APPMAP=true
10
- -v #{File.absolute_path tmpdir}:/app/tmp app ./bin/rspec #{spec_name}
11
- CMD
12
- run_cmd cmd, chdir: fixture_dir
13
- end
14
-
15
- def generate_swagger
16
- cmd = <<~CMD.gsub "\n", ' '
17
- docker-compose run --rm -v #{File.absolute_path tmpdir}:/app/tmp app ./bin/rake appmap:swagger
18
- CMD
19
- run_cmd cmd, chdir: fixture_dir
20
- end
21
-
22
7
  unless use_existing_data?
23
8
  before(:all) do
24
- generate_swagger
9
+ @app.run_cmd './bin/rake appmap:swagger'
25
10
  end
26
11
  end
27
12
 
data/spec/util_spec.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  require 'spec_helper'
4
4
  require 'appmap/util'
5
5
 
6
- describe AppMap::Util, docker: false do
6
+ describe AppMap::Util do
7
7
  describe 'scenario_filename' do
8
8
  let(:subject) { AppMap::Util.method(:scenario_filename) }
9
9
  it 'leaves short names alone' do
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.77.3
4
+ version: 0.79.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: 2022-03-29 00:00:00.000000000 Z
11
+ date: 2022-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '5.14'
89
+ version: '5.15'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '5.14'
96
+ version: '5.15'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: pry-byebug
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -276,6 +276,20 @@ dependencies:
276
276
  - - ">="
277
277
  - !ruby/object:Gem::Version
278
278
  version: '0'
279
+ - !ruby/object:Gem::Dependency
280
+ name: random-port
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - "~>"
284
+ - !ruby/object:Gem::Version
285
+ version: 0.5.1
286
+ type: :development
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - "~>"
291
+ - !ruby/object:Gem::Version
292
+ version: 0.5.1
279
293
  - !ruby/object:Gem::Dependency
280
294
  name: webrick
281
295
  requirement: !ruby/object:Gem::Requirement
@@ -312,7 +326,7 @@ files:
312
326
  - ARCHITECTURE.md
313
327
  - CHANGELOG.md
314
328
  - CONTRIBUTING.md
315
- - Dockerfile.appmap
329
+ - Dockerfile.pg
316
330
  - Gemfile
317
331
  - LICENSE.txt
318
332
  - README.md
@@ -321,6 +335,7 @@ files:
321
335
  - appmap.gemspec
322
336
  - appmap.yml
323
337
  - config-schema.yml
338
+ - docker-compose.yml
324
339
  - examples/install.rb
325
340
  - examples/mock_webapp/Gemfile
326
341
  - examples/mock_webapp/appmap.yml
@@ -376,6 +391,7 @@ files:
376
391
  - lib/appmap/gem_hooks/sidekiq.yml
377
392
  - lib/appmap/gem_hooks/sprockets.yml
378
393
  - lib/appmap/handler.rb
394
+ - lib/appmap/handler/eval.rb
379
395
  - lib/appmap/handler/function.rb
380
396
  - lib/appmap/handler/net_http.rb
381
397
  - lib/appmap/handler/rails/request_handler.rb
@@ -383,6 +399,8 @@ files:
383
399
  - lib/appmap/handler/rails/template.rb
384
400
  - lib/appmap/hook.rb
385
401
  - lib/appmap/hook/method.rb
402
+ - lib/appmap/hook/method/ruby2.rb
403
+ - lib/appmap/hook/method/ruby3.rb
386
404
  - lib/appmap/metadata.rb
387
405
  - lib/appmap/middleware/remote_recording.rb
388
406
  - lib/appmap/minitest.rb
@@ -418,6 +436,7 @@ files:
418
436
  - spec/fixtures/config/invalid_yaml_config.yml
419
437
  - spec/fixtures/config/missing_path_or_gem.yml
420
438
  - spec/fixtures/config/valid_config.yml
439
+ - spec/fixtures/database.yml
421
440
  - spec/fixtures/depends/.gitignore
422
441
  - spec/fixtures/depends/app/controllers/api/api_keys_controller.rb
423
442
  - spec/fixtures/depends/app/controllers/organizations_controller.rb
@@ -460,18 +479,14 @@ files:
460
479
  - spec/fixtures/hook/user_page_scenario.appmap.json
461
480
  - spec/fixtures/rack_users_app/.dockerignore
462
481
  - spec/fixtures/rack_users_app/.gitignore
463
- - spec/fixtures/rack_users_app/Dockerfile
464
482
  - spec/fixtures/rack_users_app/Gemfile
465
483
  - spec/fixtures/rack_users_app/appmap.yml
466
484
  - spec/fixtures/rack_users_app/config.ru
467
- - spec/fixtures/rack_users_app/docker-compose.yml
468
485
  - spec/fixtures/rack_users_app/lib/app.rb
469
486
  - spec/fixtures/rails5_users_app/.dockerignore
470
487
  - spec/fixtures/rails5_users_app/.gitignore
471
488
  - spec/fixtures/rails5_users_app/.rspec
472
489
  - spec/fixtures/rails5_users_app/.ruby-version
473
- - spec/fixtures/rails5_users_app/Dockerfile
474
- - spec/fixtures/rails5_users_app/Dockerfile.pg
475
490
  - spec/fixtures/rails5_users_app/Gemfile
476
491
  - spec/fixtures/rails5_users_app/Rakefile
477
492
  - spec/fixtures/rails5_users_app/app/controllers/api/users_controller.rb
@@ -520,10 +535,8 @@ files:
520
535
  - spec/fixtures/rails5_users_app/config/initializers/wrap_parameters.rb
521
536
  - spec/fixtures/rails5_users_app/config/locales/en.yml
522
537
  - spec/fixtures/rails5_users_app/config/routes.rb
523
- - spec/fixtures/rails5_users_app/create_app
524
538
  - spec/fixtures/rails5_users_app/db/migrate/20190728211408_create_users.rb
525
539
  - spec/fixtures/rails5_users_app/db/schema.rb
526
- - spec/fixtures/rails5_users_app/docker-compose.yml
527
540
  - spec/fixtures/rails5_users_app/features/api_users.feature
528
541
  - spec/fixtures/rails5_users_app/features/support/env.rb
529
542
  - spec/fixtures/rails5_users_app/features/support/hooks.rb
@@ -540,9 +553,6 @@ files:
540
553
  - spec/fixtures/rails6_users_app/.dockerignore
541
554
  - spec/fixtures/rails6_users_app/.gitignore
542
555
  - spec/fixtures/rails6_users_app/.rspec
543
- - spec/fixtures/rails6_users_app/.ruby-version
544
- - spec/fixtures/rails6_users_app/Dockerfile
545
- - spec/fixtures/rails6_users_app/Dockerfile.pg
546
556
  - spec/fixtures/rails6_users_app/Gemfile
547
557
  - spec/fixtures/rails6_users_app/Rakefile
548
558
  - spec/fixtures/rails6_users_app/app/controllers/api/users_controller.rb
@@ -591,10 +601,8 @@ files:
591
601
  - spec/fixtures/rails6_users_app/config/initializers/wrap_parameters.rb
592
602
  - spec/fixtures/rails6_users_app/config/locales/en.yml
593
603
  - spec/fixtures/rails6_users_app/config/routes.rb
594
- - spec/fixtures/rails6_users_app/create_app
595
604
  - spec/fixtures/rails6_users_app/db/migrate/20190728211408_create_users.rb
596
605
  - spec/fixtures/rails6_users_app/db/schema.rb
597
- - spec/fixtures/rails6_users_app/docker-compose.yml
598
606
  - spec/fixtures/rails6_users_app/features/api_users.feature
599
607
  - spec/fixtures/rails6_users_app/features/support/env.rb
600
608
  - spec/fixtures/rails6_users_app/features/support/hooks.rb
@@ -617,9 +625,6 @@ files:
617
625
  - spec/fixtures/rails7_users_app/.gitattributes
618
626
  - spec/fixtures/rails7_users_app/.gitignore
619
627
  - spec/fixtures/rails7_users_app/.rspec
620
- - spec/fixtures/rails7_users_app/.ruby-version
621
- - spec/fixtures/rails7_users_app/Dockerfile
622
- - spec/fixtures/rails7_users_app/Dockerfile.pg
623
628
  - spec/fixtures/rails7_users_app/Gemfile
624
629
  - spec/fixtures/rails7_users_app/README.md
625
630
  - spec/fixtures/rails7_users_app/Rakefile
@@ -670,12 +675,10 @@ files:
670
675
  - spec/fixtures/rails7_users_app/config/puma.rb
671
676
  - spec/fixtures/rails7_users_app/config/routes.rb
672
677
  - spec/fixtures/rails7_users_app/config/storage.yml
673
- - spec/fixtures/rails7_users_app/create_app
674
678
  - spec/fixtures/rails7_users_app/db/migrate/20220328093141_create_instances.rb
675
679
  - spec/fixtures/rails7_users_app/db/migrate/20220328093154_create_instructors.rb
676
680
  - spec/fixtures/rails7_users_app/db/schema.rb
677
681
  - spec/fixtures/rails7_users_app/db/seeds.rb
678
- - spec/fixtures/rails7_users_app/docker-compose.yml
679
682
  - spec/fixtures/rails7_users_app/lib/assets/.keep
680
683
  - spec/fixtures/rails7_users_app/lib/tasks/.keep
681
684
  - spec/fixtures/rails7_users_app/log/.keep
@@ -701,6 +704,7 @@ files:
701
704
  - spec/fixtures/rails7_users_app/test/models/instructor_test.rb
702
705
  - spec/fixtures/rails7_users_app/test/system/.keep
703
706
  - spec/fixtures/rails7_users_app/test/test_helper.rb
707
+ - spec/handler/eval_spec.rb
704
708
  - spec/hook_spec.rb
705
709
  - spec/open_spec.rb
706
710
  - spec/rails_recording_spec.rb
data/Dockerfile.appmap DELETED
@@ -1,5 +0,0 @@
1
- FROM alpine
2
- ARG GEM_VERSION
3
-
4
- RUN mkdir /pkg
5
- COPY pkg/appmap-${GEM_VERSION}.gem /pkg/appmap.gem
@@ -1,32 +0,0 @@
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
-
9
- RUN mkdir /app
10
- WORKDIR /app
11
-
12
- RUN gem install -N bundler
13
-
14
- COPY Gemfile .
15
-
16
- RUN bundle
17
- RUN bundle binstubs rack
18
-
19
- COPY . .
20
-
21
- COPY --from=appmap /pkg/appmap.gem /tmp/
22
- RUN gem install /tmp/appmap.gem && \
23
- bundle update --local appmap && \
24
- bundle binstubs appmap --force
25
-
26
- EXPOSE 9292
27
-
28
- ENV GLI_DEBUG=true
29
-
30
- ENTRYPOINT [ "./bin/appmap", "record", "-o", "tmp/appmap.json" ]
31
-
32
- HEALTHCHECK --interval=1s --retries=10 CMD curl --fail http://localhost:9292/health || exit 1
@@ -1,9 +0,0 @@
1
- version: "3"
2
- services:
3
- app:
4
- build:
5
- context: .
6
- dockerfile: Dockerfile
7
- image: rack-users-app:${RUBY_VERSION}
8
- ports:
9
- - "9292"
@@ -1,29 +0,0 @@
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
@@ -1,18 +0,0 @@
1
- default: &default
2
- host: <%= ENV['PGHOST'] || 'pg' %>
3
- port: <%= ENV['PGPORT'] || 5432 %>
4
- user: postgres
5
- adapter: postgresql
6
- encoding: unicode
7
- # For details on connection pooling, see Rails configuration guide
8
- # http://guides.rubyonrails.org/configuring.html#database-pooling
9
- pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
10
-
11
- development:
12
- <<: *default
13
- database: app_development
14
- test:
15
- <<: *default
16
- database: app_test
17
- production:
18
- <<: *default
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -ex
3
-
4
- # Just checking for a healthy container isn't enough, apparently. If
5
- # we don't wait here, sometimes the database is inaccessible.
6
- for i in {1..10}; do
7
- psql -h pg -U postgres postgres -c 'select 1' >/dev/null 2>&1 && break
8
- printf ' .'
9
- sleep 1
10
- done
11
- echo
12
- out="$(psql -h pg -U postgres postgres -c 'select 1' 2>&1)"
13
- if [[ $? != 0 ]]; then
14
- echo "Postgres didn't start in time:"
15
- echo "$out"
16
- exit 1
17
- fi
18
-
19
- # Required for migrations
20
- export ORM_MODULE=sequel
21
-
22
- set +e
23
- psql -h pg -U postgres -c "drop database if exists app_development"
24
- psql -h pg -U postgres -c "drop database if exists app_test"
25
- set -e
26
-
27
- psql -h pg -U postgres -c "create database app_development"
28
- psql -h pg -U postgres -c "create database app_test"
29
-
30
- env RAILS_ENV=development bundle exec rake -t db:migrate
31
- env RAILS_ENV=test bundle exec rake -t db:migrate
32
-
33
- echo "INSERT INTO users ( login ) VALUES ( 'admin' ) " | psql -h pg -U postgres app_development
@@ -1,31 +0,0 @@
1
- version: "3"
2
- services:
3
- pg:
4
- build:
5
- context: .
6
- dockerfile: Dockerfile.pg
7
- ports:
8
- - "5432"
9
- environment:
10
- POSTGRES_HOST_AUTH_METHOD: trust
11
-
12
- app:
13
- build:
14
- context: .
15
- dockerfile: Dockerfile
16
- image: rails5-app:${RUBY_VERSION}
17
- command:
18
- [ "./bin/rails", "server", "-b", "0.0.0.0", "webrick" ]
19
- environment:
20
- RAILS_ENV:
21
- ORM_MODULE:
22
- PGHOST: pg
23
- PGPORT: '5432'
24
- DATABASE_URL: postgres://postgres@pg
25
- APPMAP:
26
- volumes:
27
- - .:/src/app
28
- ports:
29
- - "3000"
30
- links:
31
- - pg:pg
@@ -1 +0,0 @@
1
- 2.6.2
@@ -1,44 +0,0 @@
1
- ARG GEM_VERSION
2
- ARG RUBY_VERSION
3
-
4
- FROM appmap:${GEM_VERSION} as appmap
5
- FROM ruby:${RUBY_VERSION}
6
-
7
- SHELL ["/bin/bash", "-c"]
8
-
9
- RUN apt-get update && apt-get install -y vim less
10
- RUN apt-get install -y postgresql-client
11
-
12
- RUN curl -fsSL https://fnm.vercel.app/install | bash \
13
- && source /root/.bashrc \
14
- && fnm install --lts \
15
- && echo 'fnm default $(fnm current)' >> ~/.bashrc \
16
- && ln -s $(which node) /usr/local/bin/ \
17
- && ln -s $(which npx) /usr/local/bin/ \
18
- && npm install -g yarn \
19
- && ln -s $(which yarn) /usr/local/bin/
20
-
21
- RUN mkdir /app
22
- WORKDIR /app
23
-
24
- RUN gem install -N bundler
25
-
26
- COPY package.json .
27
-
28
- RUN yarn install
29
-
30
- COPY Gemfile .
31
-
32
- RUN bundle
33
- RUN bundle binstubs bundler rspec-core --force
34
-
35
- COPY . .
36
-
37
- COPY --from=appmap /pkg/appmap.gem /tmp/
38
- RUN gem install /tmp/appmap.gem && \
39
- bundle update --local appmap && \
40
- bundle binstubs appmap --force
41
-
42
- EXPOSE 3000
43
-
44
- HEALTHCHECK --interval=1s --retries=10 CMD curl --fail http://localhost:3000/health || exit 1
@@ -1,3 +0,0 @@
1
- FROM postgres:10
2
-
3
- HEALTHCHECK --interval=1s --retries=10 CMD psql -U postgres -c "select 1" || exit 1
@@ -1,18 +0,0 @@
1
- default: &default
2
- host: <%= ENV['PGHOST'] || 'pg' %>
3
- port: <%= ENV['PGPORT'] || 5432 %>
4
- user: postgres
5
- adapter: postgresql
6
- encoding: unicode
7
- # For details on connection pooling, see Rails configuration guide
8
- # http://guides.rubyonrails.org/configuring.html#database-pooling
9
- pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
10
-
11
- development:
12
- <<: *default
13
- database: app_development
14
- test:
15
- <<: *default
16
- database: app_test
17
- production:
18
- <<: *default
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -ex
3
-
4
- # Just checking for a healthy container isn't enough, apparently. If
5
- # we don't wait here, sometimes the database is inaccessible.
6
- for i in {1..10}; do
7
- psql -h pg -U postgres postgres -c 'select 1' >/dev/null 2>&1 && break
8
- printf ' .'
9
- sleep 1
10
- done
11
- echo
12
- out="$(psql -h pg -U postgres postgres -c 'select 1' 2>&1)"
13
- if [[ $? != 0 ]]; then
14
- echo "Postgres didn't start in time:"
15
- echo "$out"
16
- exit 1
17
- fi
18
-
19
- # Required for migrations
20
- export ORM_MODULE=sequel
21
-
22
- set +e
23
- psql -h pg -U postgres -c "drop database if exists app_development"
24
- psql -h pg -U postgres -c "drop database if exists app_test"
25
- set -e
26
-
27
- psql -h pg -U postgres -c "create database app_development"
28
- psql -h pg -U postgres -c "create database app_test"
29
-
30
- env RAILS_ENV=development bundle exec rake -t db:migrate
31
- env RAILS_ENV=test bundle exec rake -t db:migrate
32
-
33
- echo "INSERT INTO users ( login ) VALUES ( 'admin' ) " | psql -h pg -U postgres app_development
@@ -1,31 +0,0 @@
1
- version: "3"
2
- services:
3
- pg:
4
- build:
5
- context: .
6
- dockerfile: Dockerfile.pg
7
- ports:
8
- - "5432"
9
- environment:
10
- POSTGRES_HOST_AUTH_METHOD: trust
11
-
12
- app:
13
- build:
14
- context: .
15
- dockerfile: Dockerfile
16
- image: rails6-app:${RUBY_VERSION}
17
- command:
18
- [ "./bin/rails", "server", "-b", "0.0.0.0", "-u", "webrick" ]
19
- environment:
20
- RAILS_ENV:
21
- ORM_MODULE:
22
- PGHOST: pg
23
- PGPORT: '5432'
24
- DATABASE_URL: postgres://postgres@pg
25
- APPMAP:
26
- volumes:
27
- - .:/src/app
28
- ports:
29
- - "3000"
30
- links:
31
- - pg:pg
@@ -1 +0,0 @@
1
- ruby-3.1.0
@@ -1,30 +0,0 @@
1
- ARG GEM_VERSION
2
- ARG RUBY_VERSION
3
-
4
- FROM appmap:${GEM_VERSION} as appmap
5
- FROM ruby:${RUBY_VERSION}
6
-
7
- SHELL ["/bin/bash", "-c"]
8
-
9
- RUN apt-get update && apt-get install -y vim less
10
- RUN apt-get install -y postgresql-client
11
-
12
- RUN mkdir /app
13
- WORKDIR /app
14
-
15
- RUN gem install -N bundler
16
-
17
- COPY Gemfile .
18
-
19
- RUN bundle
20
-
21
- COPY . .
22
-
23
- COPY --from=appmap /pkg/appmap.gem /tmp/
24
- RUN gem install /tmp/appmap.gem && \
25
- bundle update --local appmap && \
26
- bundle binstubs appmap --force
27
-
28
- EXPOSE 3000
29
-
30
- HEALTHCHECK --interval=1s --retries=10 CMD curl --fail http://localhost:3000/health || exit 1
@@ -1,3 +0,0 @@
1
- FROM postgres:10
2
-
3
- HEALTHCHECK --interval=1s --retries=10 CMD psql -U postgres -c "select 1" || exit 1
@@ -1,86 +0,0 @@
1
- # PostgreSQL. Versions 9.3 and up are supported.
2
- #
3
- # Install the pg driver:
4
- # gem install pg
5
- # On macOS with Homebrew:
6
- # gem install pg -- --with-pg-config=/usr/local/bin/pg_config
7
- # On macOS with MacPorts:
8
- # gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
9
- # On Windows:
10
- # gem install pg
11
- # Choose the win32 build.
12
- # Install PostgreSQL and put its /bin directory on your path.
13
- #
14
- # Configure Using Gemfile
15
- # gem "pg"
16
- #
17
- default: &default
18
- adapter: postgresql
19
- encoding: unicode
20
- # For details on connection pooling, see Rails configuration guide
21
- # https://guides.rubyonrails.org/configuring.html#database-pooling
22
- pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
23
-
24
- development:
25
- <<: *default
26
- database: app_development
27
-
28
- # The specified database role being used to connect to postgres.
29
- # To create additional roles in postgres see `$ createuser --help`.
30
- # When left blank, postgres will use the default role. This is
31
- # the same name as the operating system user running Rails.
32
- #username: app
33
-
34
- # The password associated with the postgres role (username).
35
- #password:
36
-
37
- # Connect on a TCP socket. Omitted by default since the client uses a
38
- # domain socket that doesn't need configuration. Windows does not have
39
- # domain sockets, so uncomment these lines.
40
- #host: localhost
41
-
42
- # The TCP port the server listens on. Defaults to 5432.
43
- # If your server runs on a different port number, change accordingly.
44
- #port: 5432
45
-
46
- # Schema search path. The server defaults to $user,public
47
- #schema_search_path: myapp,sharedapp,public
48
-
49
- # Minimum log levels, in increasing order:
50
- # debug5, debug4, debug3, debug2, debug1,
51
- # log, notice, warning, error, fatal, and panic
52
- # Defaults to warning.
53
- #min_messages: notice
54
-
55
- # Warning: The database defined as "test" will be erased and
56
- # re-generated from your development database when you run "rake".
57
- # Do not set this db to the same as development or production.
58
- test:
59
- <<: *default
60
- database: app_test
61
-
62
- # As with config/credentials.yml, you never want to store sensitive information,
63
- # like your database password, in your source code. If your source code is
64
- # ever seen by anyone, they now have access to your database.
65
- #
66
- # Instead, provide the password or a full connection URL as an environment
67
- # variable when you boot the app. For example:
68
- #
69
- # DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
70
- #
71
- # If the connection URL is provided in the special DATABASE_URL environment
72
- # variable, Rails will automatically merge its configuration values on top of
73
- # the values provided in this file. Alternatively, you can specify a connection
74
- # URL environment variable explicitly:
75
- #
76
- # production:
77
- # url: <%= ENV["MY_APP_DATABASE_URL"] %>
78
- #
79
- # Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
80
- # for a full overview on how database connection configuration can be specified.
81
- #
82
- production:
83
- <<: *default
84
- database: app_production
85
- username: app
86
- password: <%= ENV["APP_DATABASE_PASSWORD"] %>
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -ex
3
-
4
- # Just checking for a healthy container isn't enough, apparently. If
5
- # we don't wait here, sometimes the database is inaccessible.
6
- for i in {1..10}; do
7
- psql -h pg -U postgres postgres -c 'select 1' >/dev/null 2>&1 && break
8
- printf ' .'
9
- sleep 1
10
- done
11
- echo
12
- out="$(psql -h pg -U postgres postgres -c 'select 1' 2>&1)"
13
- if [[ $? != 0 ]]; then
14
- echo "Postgres didn't start in time:"
15
- echo "$out"
16
- exit 1
17
- fi
18
-
19
- # Required for migrations
20
- export ORM_MODULE=sequel
21
-
22
- set +e
23
- psql -h pg -U postgres -c "drop database if exists app_development"
24
- psql -h pg -U postgres -c "drop database if exists app_test"
25
- set -e
26
-
27
- psql -h pg -U postgres -c "create database app_development"
28
- psql -h pg -U postgres -c "create database app_test"
29
-
30
- env RAILS_ENV=development bundle exec rake -t db:migrate
31
- env RAILS_ENV=test bundle exec rake -t db:migrate