Comments (4)
Capybara bug: teamcapybara/capybara#2590
from rails-template.
A standard Rails 7+ rails new
generates the following config/puma.rb
:
# Puma can serve each request in a thread from an internal thread pool.
# The `threads` method setting takes two numbers: a minimum and maximum.
# Any libraries that use thread pools should be configured to match
# the maximum value specified for Puma. Default is set to 5 threads for minimum
# and maximum; this matches the default thread size of Active Record.
#
max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
threads min_threads_count, max_threads_count
# Specifies the `worker_timeout` threshold that Puma will use to wait before
# terminating a worker in development environments.
#
worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development"
# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
#
port ENV.fetch("PORT") { 3000 }
# Specifies the `environment` that Puma will run in.
#
environment ENV.fetch("RAILS_ENV") { "development" }
# Specifies the `pidfile` that Puma will use.
pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
# Specifies the number of `workers` to boot in clustered mode.
# Workers are forked web server processes. If using threads and workers together
# the concurrency of the application would be max `threads` * `workers`.
# Workers do not work on JRuby or Windows (both of which do not support
# processes).
#
# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
# Use the `preload_app!` method when specifying a `workers` number.
# This directive tells Puma to first boot the application and load code
# before forking the application. This takes advantage of Copy On Write
# process behavior so workers use less memory.
#
# preload_app!
# Allow puma to be restarted by `bin/rails restart` command.
plugin :tmp_restart
This template generates
# Puma can serve each request in a thread from an internal thread pool.
# The `threads` method setting takes two numbers: a minimum and maximum.
# Any libraries that use thread pools should be configured to match
# the maximum value specified for Puma. Default is set to 5 threads for minimum
# and maximum; this matches the default thread size of Active Record.
#
max_threads_count = ENV.fetch("RAILS_MAX_THREADS", 5)
min_threads_count = ENV.fetch("RAILS_MIN_THREADS", max_threads_count)
threads min_threads_count, max_threads_count
port ENV.fetch("PORT", 3000)
environment ENV.fetch("RAILS_ENV", "development")
# Specifies the `pidfile` that Puma will use.
pidfile ENV.fetch("PIDFILE", "tmp/pids/server.pid")
# Specifies the number of `workers` to boot in clustered mode.
# Workers are forked web server processes. If using threads and workers together
# the concurrency of the application would be max `threads` * `workers`.
# Workers do not work on JRuby or Windows (both of which do not support
# processes).
#
workers_count = ENV.fetch("WEB_CONCURRENCY", 1).to_i
if workers_count > 1
workers workers_count
# This directive tells Puma to first boot the application and load code
# before forking the application. This takes advantage of Copy On Write
# process behavior so workers use less memory.
#
preload_app!
before_fork do
ActiveRecord::Base.connection_pool.disconnect! if defined?(ActiveRecord)
end
on_worker_boot do
ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
end
end
# Allow puma to be restarted by `rails restart` command.
plugin :tmp_restart
I believe both of these will need to be updated for the new configuration syntax.
This is probably also a good opportuntiy for us to look more generally at our config/puma.rb
and make sure it is up to date (we've used it unchanged for quite a while). I notice in the puma configuration that there are some ENV vars we could potentially use.
from rails-template.
Just noting that Puma is up to version 6.3.1
now so we should not delay this much longer.
from rails-template.
I'll just address the more urgent puma version issue here. Iterating on our puma config is now in issue #493
from rails-template.
Related Issues (20)
- Upgrade aws-actions/configure-aws-credentials to latest version
- Move from SASS `@import` to `@use`
- Let's add `erblint`
- Disable Rails/SquishedSQLHeredocs rubocop by default
- Remove before_fork, on_worker_boot callbacks from puma config if they are no longer required
- Support Rails 7.1 HOT 2
- Consider using msgpack serialiser
- Rails 7.1 generates Dockerfile by default - integrate it into our Dockerfile HOT 1
- Consider replacing sprockets with propshaft HOT 2
- Discuss adopting Rails 7.1+ config.application_controller.raise_on_missing_callback_actions HOT 2
- Support "documents" as assets out of the box HOT 1
- Use `always` for `SelfClosingTag` in erb-lint HOT 2
- Consider adding TestProf
- Check our parameter sanitisation and filtering for logging & sentry HOT 1
- Move off `axe-matchers`
- Can we make the session cookie SameSite=Strict (currently defaulting to SameSite=Lax)? HOT 1
- Do we want ci to copy example.env instead of having its own list of env vars HOT 1
- Devise variant is consistently failing lighthouse accessibility audit
- Consider setting `action_on_unpermitted_parameters` to `:raise` in development and/or test HOT 1
- Explore moving from devise to Rails 8 authentication generator
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rails-template.