zapp 0.2.1 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/lib/zapp/configuration.rb +9 -1
  3. data/lib/zapp/http_context/request.rb +2 -2
  4. data/lib/zapp/logger/base.rb +103 -0
  5. data/lib/zapp/logger.rb +20 -57
  6. data/lib/zapp/server.rb +9 -4
  7. data/lib/zapp/socket_pipe/receiver.rb +0 -8
  8. data/lib/zapp/version.rb +1 -1
  9. data/lib/zapp/worker/request_processor.rb +27 -32
  10. data/lib/zapp/worker.rb +5 -6
  11. data/lib/zapp/worker_pool.rb +6 -5
  12. data/lib/zapp.rb +5 -2
  13. metadata +5 -109
  14. data/.circleci/config.yml +0 -21
  15. data/.gitignore +0 -13
  16. data/.rspec +0 -3
  17. data/.rubocop.yml +0 -48
  18. data/.ruby-version +0 -1
  19. data/Gemfile +0 -13
  20. data/Gemfile.lock +0 -112
  21. data/Guardfile +0 -23
  22. data/LICENSE.txt +0 -21
  23. data/README.md +0 -91
  24. data/Rakefile +0 -8
  25. data/examples/rails-app/.browserslistrc +0 -1
  26. data/examples/rails-app/.gitattributes +0 -10
  27. data/examples/rails-app/.gitignore +0 -40
  28. data/examples/rails-app/.ruby-version +0 -1
  29. data/examples/rails-app/Gemfile +0 -58
  30. data/examples/rails-app/Gemfile.lock +0 -255
  31. data/examples/rails-app/Rakefile +0 -8
  32. data/examples/rails-app/app/assets/config/manifest.js +0 -2
  33. data/examples/rails-app/app/assets/images/.keep +0 -0
  34. data/examples/rails-app/app/assets/stylesheets/application.css +0 -15
  35. data/examples/rails-app/app/channels/application_cable/channel.rb +0 -6
  36. data/examples/rails-app/app/channels/application_cable/connection.rb +0 -6
  37. data/examples/rails-app/app/controllers/application_controller.rb +0 -4
  38. data/examples/rails-app/app/controllers/concerns/.keep +0 -0
  39. data/examples/rails-app/app/helpers/application_helper.rb +0 -4
  40. data/examples/rails-app/app/javascript/channels/consumer.js +0 -6
  41. data/examples/rails-app/app/javascript/channels/index.js +0 -5
  42. data/examples/rails-app/app/javascript/packs/application.js +0 -13
  43. data/examples/rails-app/app/jobs/application_job.rb +0 -9
  44. data/examples/rails-app/app/mailers/application_mailer.rb +0 -6
  45. data/examples/rails-app/app/models/application_record.rb +0 -5
  46. data/examples/rails-app/app/models/concerns/.keep +0 -0
  47. data/examples/rails-app/app/views/layouts/application.html.erb +0 -16
  48. data/examples/rails-app/app/views/layouts/mailer.html.erb +0 -13
  49. data/examples/rails-app/app/views/layouts/mailer.text.erb +0 -1
  50. data/examples/rails-app/babel.config.js +0 -82
  51. data/examples/rails-app/bin/bundle +0 -118
  52. data/examples/rails-app/bin/rails +0 -7
  53. data/examples/rails-app/bin/rake +0 -7
  54. data/examples/rails-app/bin/setup +0 -38
  55. data/examples/rails-app/bin/spring +0 -16
  56. data/examples/rails-app/bin/webpack +0 -21
  57. data/examples/rails-app/bin/webpack-dev-server +0 -21
  58. data/examples/rails-app/bin/yarn +0 -19
  59. data/examples/rails-app/bin/zapp +0 -1
  60. data/examples/rails-app/config/application.rb +0 -24
  61. data/examples/rails-app/config/boot.rb +0 -6
  62. data/examples/rails-app/config/cable.yml +0 -10
  63. data/examples/rails-app/config/credentials.yml.enc +0 -1
  64. data/examples/rails-app/config/database.yml +0 -25
  65. data/examples/rails-app/config/environment.rb +0 -7
  66. data/examples/rails-app/config/environments/development.rb +0 -78
  67. data/examples/rails-app/config/environments/production.rb +0 -122
  68. data/examples/rails-app/config/environments/test.rb +0 -62
  69. data/examples/rails-app/config/initializers/application_controller_renderer.rb +0 -9
  70. data/examples/rails-app/config/initializers/assets.rb +0 -16
  71. data/examples/rails-app/config/initializers/backtrace_silencers.rb +0 -10
  72. data/examples/rails-app/config/initializers/content_security_policy.rb +0 -31
  73. data/examples/rails-app/config/initializers/cookies_serializer.rb +0 -7
  74. data/examples/rails-app/config/initializers/filter_parameter_logging.rb +0 -8
  75. data/examples/rails-app/config/initializers/inflections.rb +0 -17
  76. data/examples/rails-app/config/initializers/mime_types.rb +0 -5
  77. data/examples/rails-app/config/initializers/permissions_policy.rb +0 -12
  78. data/examples/rails-app/config/initializers/wrap_parameters.rb +0 -16
  79. data/examples/rails-app/config/locales/en.yml +0 -33
  80. data/examples/rails-app/config/puma.rb +0 -45
  81. data/examples/rails-app/config/routes.rb +0 -5
  82. data/examples/rails-app/config/spring.rb +0 -8
  83. data/examples/rails-app/config/storage.yml +0 -34
  84. data/examples/rails-app/config/webpack/development.js +0 -5
  85. data/examples/rails-app/config/webpack/environment.js +0 -3
  86. data/examples/rails-app/config/webpack/production.js +0 -5
  87. data/examples/rails-app/config/webpack/test.js +0 -5
  88. data/examples/rails-app/config/webpacker.yml +0 -92
  89. data/examples/rails-app/config/zapp.rb +0 -10
  90. data/examples/rails-app/config.ru +0 -7
  91. data/examples/rails-app/db/seeds.rb +0 -8
  92. data/examples/rails-app/lib/assets/.keep +0 -0
  93. data/examples/rails-app/lib/tasks/.keep +0 -0
  94. data/examples/rails-app/log/.keep +0 -0
  95. data/examples/rails-app/package.json +0 -17
  96. data/examples/rails-app/postcss.config.js +0 -12
  97. data/examples/rails-app/public/404.html +0 -67
  98. data/examples/rails-app/public/422.html +0 -67
  99. data/examples/rails-app/public/500.html +0 -66
  100. data/examples/rails-app/public/apple-touch-icon-precomposed.png +0 -0
  101. data/examples/rails-app/public/apple-touch-icon.png +0 -0
  102. data/examples/rails-app/public/favicon.ico +0 -0
  103. data/examples/rails-app/public/robots.txt +0 -1
  104. data/examples/rails-app/storage/.keep +0 -0
  105. data/examples/rails-app/test/application_system_test_case.rb +0 -7
  106. data/examples/rails-app/test/channels/application_cable/connection_test.rb +0 -15
  107. data/examples/rails-app/test/controllers/.keep +0 -0
  108. data/examples/rails-app/test/fixtures/files/.keep +0 -0
  109. data/examples/rails-app/test/helpers/.keep +0 -0
  110. data/examples/rails-app/test/integration/.keep +0 -0
  111. data/examples/rails-app/test/mailers/.keep +0 -0
  112. data/examples/rails-app/test/models/.keep +0 -0
  113. data/examples/rails-app/test/system/.keep +0 -0
  114. data/examples/rails-app/test/test_helper.rb +0 -17
  115. data/examples/rails-app/tmp/.keep +0 -0
  116. data/examples/rails-app/tmp/pids/.keep +0 -0
  117. data/examples/rails-app/vendor/.keep +0 -0
  118. data/examples/rails-app/yarn.lock +0 -6973
  119. data/zapp.gemspec +0 -44
data/.circleci/config.yml DELETED
@@ -1,21 +0,0 @@
1
- version: 2.1
2
-
3
- orbs:
4
- ruby: circleci/ruby@0.1.2
5
-
6
- jobs:
7
- test_three_zero_zero:
8
- docker:
9
- - image: circleci/ruby:3.0.0
10
- executor: ruby/default
11
- steps:
12
- - checkout
13
- - ruby/bundle-install
14
- - run:
15
- name: RSpec
16
- command: bundle exec rspec
17
-
18
- workflows:
19
- test:
20
- jobs:
21
- - test_three_zero_zero
data/.gitignore DELETED
@@ -1,13 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
- /.idea/
10
- /example/
11
-
12
- # rspec failure tracking
13
- .rspec_status
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper
data/.rubocop.yml DELETED
@@ -1,48 +0,0 @@
1
- AllCops:
2
- TargetRubyVersion: 3.0.0
3
- EnabledByDefault: true
4
- NewCops: enable
5
- Exclude:
6
- - examples/**/*
7
-
8
- Style/DocumentationMethod:
9
- Enabled: false
10
- Style/MissingElse:
11
- Enabled: false
12
- Style/StringLiterals:
13
- EnforcedStyle: double_quotes
14
- Style/InlineComments:
15
- Enabled: false
16
- Style/Copyright:
17
- Enabled: false
18
- Style/ConstantVisibility:
19
- Enabled: false
20
- Style/MethodCallWithArgsParentheses:
21
- IgnoreMacros: false
22
- Style/MethodCalledOnDoEndBlock:
23
- Enabled: false
24
- Style/DisableCopsWithinSourceCodeDirective:
25
- Enabled: false
26
- Style/Send:
27
- Enabled: false
28
- Style/ClassMethodsDefinitions:
29
- Enabled: false
30
-
31
- Lint/ConstantResolution:
32
- Enabled: false
33
-
34
- Bundler/GemComment:
35
- Enabled: false
36
-
37
- Layout/MultilineAssignmentLayout:
38
- Enabled: false
39
- Layout/RedundantLineBreak:
40
- Enabled: false
41
-
42
- Metrics/BlockLength:
43
- Exclude:
44
- - spec/**/*_spec.rb
45
- Metrics/MethodLength:
46
- Max: 25
47
- Metrics/AbcSize:
48
- Max: 30
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 3.0.0
data/Gemfile DELETED
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source("https://rubygems.org")
4
-
5
- # Specify your gem's dependencies in zap.gemspec
6
- gemspec
7
-
8
- group(:development) do
9
- gem("guard", "~> 2.18.0")
10
- gem("guard-rspec", "~> 4.7.3")
11
- gem("guard-rubocop", "~> 1.5.0")
12
- gem("simplecov", "~> 0.21.2")
13
- end
data/Gemfile.lock DELETED
@@ -1,112 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- zapp (0.1.1)
5
- concurrent-ruby (~> 1.1.9)
6
- puma (~> 5.5.2)
7
- rack (~> 2.2.3)
8
- rake (~> 13.0)
9
- rspec (~> 3.0)
10
- webrick
11
-
12
- GEM
13
- remote: https://rubygems.org/
14
- specs:
15
- ast (2.4.2)
16
- coderay (1.1.3)
17
- concurrent-ruby (1.1.10)
18
- diff-lcs (1.4.4)
19
- docile (1.4.0)
20
- ffi (1.15.4)
21
- formatador (0.3.0)
22
- guard (2.18.0)
23
- formatador (>= 0.2.4)
24
- listen (>= 2.7, < 4.0)
25
- lumberjack (>= 1.0.12, < 2.0)
26
- nenv (~> 0.1)
27
- notiffany (~> 0.0)
28
- pry (>= 0.13.0)
29
- shellany (~> 0.0)
30
- thor (>= 0.18.1)
31
- guard-compat (1.2.1)
32
- guard-rspec (4.7.3)
33
- guard (~> 2.1)
34
- guard-compat (~> 1.1)
35
- rspec (>= 2.99.0, < 4.0)
36
- guard-rubocop (1.5.0)
37
- guard (~> 2.0)
38
- rubocop (< 2.0)
39
- listen (3.7.0)
40
- rb-fsevent (~> 0.10, >= 0.10.3)
41
- rb-inotify (~> 0.9, >= 0.9.10)
42
- lumberjack (1.2.8)
43
- method_source (1.0.0)
44
- nenv (0.3.0)
45
- nio4r (2.5.8)
46
- notiffany (0.1.3)
47
- nenv (~> 0.1)
48
- shellany (~> 0.0)
49
- parallel (1.21.0)
50
- parser (3.0.2.0)
51
- ast (~> 2.4.1)
52
- pry (0.14.1)
53
- coderay (~> 1.1)
54
- method_source (~> 1.0)
55
- puma (5.5.2)
56
- nio4r (~> 2.0)
57
- rack (2.2.4)
58
- rainbow (3.0.0)
59
- rake (13.0.6)
60
- rb-fsevent (0.11.0)
61
- rb-inotify (0.10.1)
62
- ffi (~> 1.0)
63
- regexp_parser (2.1.1)
64
- rexml (3.2.5)
65
- rspec (3.10.0)
66
- rspec-core (~> 3.10.0)
67
- rspec-expectations (~> 3.10.0)
68
- rspec-mocks (~> 3.10.0)
69
- rspec-core (3.10.1)
70
- rspec-support (~> 3.10.0)
71
- rspec-expectations (3.10.1)
72
- diff-lcs (>= 1.2.0, < 2.0)
73
- rspec-support (~> 3.10.0)
74
- rspec-mocks (3.10.2)
75
- diff-lcs (>= 1.2.0, < 2.0)
76
- rspec-support (~> 3.10.0)
77
- rspec-support (3.10.3)
78
- rubocop (1.21.0)
79
- parallel (~> 1.10)
80
- parser (>= 3.0.0.0)
81
- rainbow (>= 2.2.2, < 4.0)
82
- regexp_parser (>= 1.8, < 3.0)
83
- rexml
84
- rubocop-ast (>= 1.9.1, < 2.0)
85
- ruby-progressbar (~> 1.7)
86
- unicode-display_width (>= 1.4.0, < 3.0)
87
- rubocop-ast (1.11.0)
88
- parser (>= 3.0.1.1)
89
- ruby-progressbar (1.11.0)
90
- shellany (0.0.1)
91
- simplecov (0.21.2)
92
- docile (~> 1.1)
93
- simplecov-html (~> 0.11)
94
- simplecov_json_formatter (~> 0.1)
95
- simplecov-html (0.12.3)
96
- simplecov_json_formatter (0.1.3)
97
- thor (1.1.0)
98
- unicode-display_width (2.1.0)
99
- webrick (1.7.0)
100
-
101
- PLATFORMS
102
- x86_64-linux
103
-
104
- DEPENDENCIES
105
- guard (~> 2.18.0)
106
- guard-rspec (~> 4.7.3)
107
- guard-rubocop (~> 1.5.0)
108
- simplecov (~> 0.21.2)
109
- zapp!
110
-
111
- BUNDLED WITH
112
- 2.3.0.dev
data/Guardfile DELETED
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- %w[lib spec].select { |d| Dir.exist?(d) ? d : UI.warning("Directory #{d} does not exist") }
4
-
5
- guard(:rspec, cmd: "bundle exec rspec --format progress") do
6
- require("guard/rspec/dsl")
7
- dsl = Guard::RSpec::Dsl.new(self)
8
-
9
- # RSpec files
10
- rspec = dsl.rspec
11
- watch(rspec.spec_helper) { rspec.spec_dir }
12
- watch(rspec.spec_support) { rspec.spec_dir }
13
- watch(rspec.spec_files)
14
-
15
- # Ruby files
16
- ruby = dsl.ruby
17
- dsl.watch_spec_files_for(ruby.lib_files)
18
- end
19
-
20
- guard(:rubocop) do
21
- watch(/.+\.rb$/)
22
- watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
23
- end
data/LICENSE.txt DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2021 Mathias H Steffensen
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
data/README.md DELETED
@@ -1,91 +0,0 @@
1
- # Zapp
2
-
3
- ![CircleCI](https://circleci.com/gh/mathiashsteffensen/zapp/tree/master.svg?style=shield)
4
-
5
- Zapp is an experimental web server for Rack-based Ruby applications. It is based on the lightning fast [Puma](https://puma.io/) HTTP parser implemented in C,
6
- and the new parallelism implementation introduced with CRuby 3.0.0, [Ractors](https://github.com/ruby/ruby/blob/master/doc/ractor.md)
7
-
8
- This is an experimental project as Ractors are very very new and the Ractor API may change at any moment. While I would not recommend using this server in production for that reason,
9
- if you do decide to do so, pin your ruby version to one of the versions this project is tested against (Currently only version 3.0.0).
10
-
11
- Why is it named Zapp with 2 p's you may ask? Because Zap with 1 p was taken.
12
-
13
- Also it's meant to be pretty fast
14
-
15
- ## Installation
16
-
17
- As a stand-alone ruby executable
18
- ```bash
19
- gem install zapp
20
- ```
21
-
22
- Or using Bundler, add the following to your gemfile
23
- ```ruby
24
- gem("zapp")
25
- ```
26
-
27
- And then run
28
- ```bash
29
- bundle
30
- ```
31
-
32
- ## Usage
33
-
34
- The CLI tool is meant to be dead simple, and all configuration should be done through a configuration file.
35
- By default Zapp will look for a config file located at ./config/zapp.rb from where the command is run.
36
- To change this you can provide the optional -c flag when running the command.
37
-
38
- To use a config file at ./configuration/server.rb:
39
- ```bash
40
- bundle exec zapp -c ./configuration/server.rb
41
- ```
42
-
43
- An example config file using Zapp's DSL may look like the following
44
- ```ruby
45
- # frozen_string_literal: true
46
-
47
- # A simple web server
48
- class App
49
- def self.call(_env)
50
- [200, {}, ["Hello from Zapp"]]
51
- end
52
- end
53
-
54
- # Register the app
55
- app(App)
56
-
57
- # Launch 2 parallel Zapp workers
58
- parallelism(2)
59
-
60
- # Have Zapp be quiet
61
- # (by default Zapp workers time requests and log when they have been processed)
62
- log_requests(false)
63
-
64
- # Let's bind to 0.0.0.0 instead of localhost
65
- # since we may run the server from a Docker container
66
- host("0.0.0.0")
67
-
68
- # Use port 8080 (3000 is the default)
69
- port(8080)
70
- ```
71
-
72
- Run the app
73
- ```bash
74
- bundle exec zapp
75
- ```
76
-
77
- ## Implementation details
78
-
79
- * Parsing is done in a single thread
80
- * Puma's HTTP Parser can not be shared between Ractors, and it cannot be copied to a Ractor so parsing can be done in parallel, I have a suspicion this is due to it being a C extension.
81
- If you have any suggestions for how to implement parallel parsing, please file a PR or an issue.
82
- * Request processing is done in parallel using the Ractor API
83
-
84
- ## TODO
85
-
86
- * Add way more tests to all parts of the library
87
- * Resolve Rails/Ractor compatibility issues
88
- * Add thread pool per worker
89
- * Add some benchmarks against Puma, quite interesting to see how Ractors perform
90
- * PID file support
91
- * Support for rack_options
data/Rakefile DELETED
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require("bundler/gem_tasks")
4
- require("rspec/core/rake_task")
5
-
6
- RSpec::Core::RakeTask.new(:spec)
7
-
8
- task(default: :spec)
@@ -1 +0,0 @@
1
- defaults
@@ -1,10 +0,0 @@
1
- # See https://git-scm.com/docs/gitattributes for more about git attribute files.
2
-
3
- # Mark the database schema as having been generated.
4
- db/schema.rb linguist-generated
5
-
6
- # Mark the yarn lockfile as having been generated.
7
- yarn.lock linguist-generated
8
-
9
- # Mark any vendored files as having been vendored.
10
- vendor/* linguist-vendored
@@ -1,40 +0,0 @@
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
-
10
- # Ignore the default SQLite database.
11
- /db/*.sqlite3
12
- /db/*.sqlite3-*
13
-
14
- # Ignore all logfiles and tempfiles.
15
- /log/*
16
- /tmp/*
17
- !/log/.keep
18
- !/tmp/.keep
19
-
20
- # Ignore pidfiles, but keep the directory.
21
- /tmp/pids/*
22
- !/tmp/pids/
23
- !/tmp/pids/.keep
24
-
25
- # Ignore uploaded files in development.
26
- /storage/*
27
- !/storage/.keep
28
-
29
- /public/assets
30
- .byebug_history
31
-
32
- # Ignore master key for decrypting credentials and more.
33
- /config/master.key
34
-
35
- /public/packs
36
- /public/packs-test
37
- /node_modules
38
- /yarn-error.log
39
- yarn-debug.log*
40
- .yarn-integrity
@@ -1 +0,0 @@
1
- 3.0.0
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source("https://rubygems.org")
4
- git_source(:github) { |repo| "https://github.com/#{repo}.git" }
5
-
6
- ruby("3.0.0")
7
-
8
- # Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main'
9
- gem("rails", "~> 6.1.4", ">= 6.1.4.1")
10
- # Use sqlite3 as the database for Active Record
11
- gem("sqlite3", "~> 1.4")
12
- # Use Zapp as the app server
13
- gem("zapp", path: "../..")
14
- # Use SCSS for stylesheets
15
- gem("sass-rails", ">= 6")
16
- # Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
17
- gem("webpacker", "~> 5.0")
18
- # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
19
- gem("turbolinks", "~> 5")
20
- # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
21
- gem("jbuilder", "~> 2.7")
22
- # Use Redis adapter to run Action Cable in production
23
- # gem 'redis', '~> 4.0'
24
- # Use Active Model has_secure_password
25
- # gem 'bcrypt', '~> 3.1.7'
26
-
27
- # Use Active Storage variant
28
- # gem 'image_processing', '~> 1.2'
29
-
30
- # Reduces boot times through caching; required in config/boot.rb
31
- gem("bootsnap", ">= 1.4.4", require: false)
32
-
33
- group(:development, :test) do
34
- # Call 'byebug' anywhere in the code to stop execution and get a debugger console
35
- gem("byebug", platforms: %i[mri mingw x64_mingw])
36
- end
37
-
38
- group(:development) do
39
- # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
40
- gem("web-console", ">= 4.1.0")
41
- # Display performance information such as SQL time and flame graphs for each request in your browser.
42
- # Can be configured to work on production as well see: https://github.com/MiniProfiler/rack-mini-profiler/blob/master/README.md
43
- gem("listen", "~> 3.3")
44
- gem("rack-mini-profiler", "~> 2.0")
45
- # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
46
- gem("spring")
47
- end
48
-
49
- group(:test) do
50
- # Adds support for Capybara system testing and selenium driver
51
- gem("capybara", ">= 3.26")
52
- gem("selenium-webdriver")
53
- # Easy installation and use of web drivers to run system tests with browsers
54
- gem("webdrivers")
55
- end
56
-
57
- # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
58
- gem("tzinfo-data", platforms: %i[mingw mswin x64_mingw jruby])