|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "Rails 7.2 released, Thruster by default for Rails 8, new Guides PRs, and much more!" |
| 4 | +categories: news |
| 5 | +author: vipulnsward |
| 6 | +og_image: assets/images/this-week-in-rails.png |
| 7 | +published: true |
| 8 | +date: 2024-08-12 |
| 9 | +--- |
| 10 | + |
| 11 | +Hey everyone, Happy Monday! |
| 12 | +[Vipul](https://www.saeloun.com/team/vipul) here with the latest updates for This Week in Rails (from last week 😅). Let's dive in. |
| 13 | + |
| 14 | +[Rails 7.2 has been released](https://rubyonrails.org/2024/8/10/Rails-7-2-0-has-been-released) |
| 15 | +Rails 7.2 has been released! |
| 16 | + |
| 17 | +Head over to the [release post](https://rubyonrails.org/2024/8/10/Rails-7-2-0-has-been-released) for more details, |
| 18 | +but in short, it ships with better production defaults, Dev containers, new guides design, and much much more! |
| 19 | + |
| 20 | + |
| 21 | +**New Guides Pull Requests for review** |
| 22 | +Two new Guides Pull Requests are now open for community review. If you are well versed in Rails Routing, Active Record Associations, please review and submit your feedback here: |
| 23 | + |
| 24 | +- [Rails Routing PR](https://github.com/rails/rails/pull/52521) |
| 25 | +- [Active Record Associations PR](https://github.com/rails/rails/pull/52523) |
| 26 | + |
| 27 | +[Use Thruster by default for Rails 8](https://github.com/rails/rails/pull/51793) |
| 28 | +[Thruster](https://github.com/basecamp/thruster/) is an asset compression and caching proxy with X-Sendfile acceleration that speeds up simple production-ready deployments of Rails applications. |
| 29 | +It runs alongside the Puma and usually behind the Kamal 2 proxy, which offers HTTP/2 and SSL auto-certificates, |
| 30 | +to help your app run efficiently and safely on the open Internet. |
| 31 | + |
| 32 | +This change configures the use of Thruster in the Dockerfile by default, starting with Rails 8. |
| 33 | + |
| 34 | +[Speed up `ActionDispatch::Routing::Mapper::Scope#[]` by merging frame hashes](https://github.com/rails/rails/pull/52525) |
| 35 | +Before this change, `ActionDispatch::Routing::Mapper::Scope#[]` lookup was iterating an array, which means access time wasn't constant, and did not actually behave like a hash. |
| 36 | + |
| 37 | +This Pull Request changes the scope implementation to make the lookup faster by just merging inherited values into the immediate hash. |
| 38 | + |
| 39 | +This helps avoid needless iterations for deeply nested routes leading it to be **~1.2x** faster. |
| 40 | + |
| 41 | +[Remove redundant Puma configuration settings](https://github.com/rails/rails/pull/52541) |
| 42 | +This Pull Request removes the following redundant environment settings in `puma.rb`: |
| 43 | + |
| 44 | +```ruby |
| 45 | +# Specifies the `environment` that Puma will run in. |
| 46 | +rails_env = ENV.fetch("RAILS_ENV", "development") |
| 47 | +environment rails_env |
| 48 | + |
| 49 | +case rails_env |
| 50 | +when "production" |
| 51 | + preload_app! |
| 52 | +when "development" |
| 53 | + # Specifies a very generous `worker_timeout` so that the worker |
| 54 | + # isn't killed by Puma when suspended by a debugger. |
| 55 | + worker_timeout 3600 |
| 56 | +end |
| 57 | +``` |
| 58 | + |
| 59 | +These changes address recent Puma upgrades that- |
| 60 | + |
| 61 | +- Puma now automatically sets its environment from RAILS_ENV. |
| 62 | +- `preload_app!` is automatically set when in cluster mode. |
| 63 | +- `worker_timeout` is a cluster mode feature, and we don't run that in dev. |
| 64 | + |
| 65 | +Another Puma change is that `WEB_CONCURRENCY` is automatically used from ENV and is now parsed directly, so it can't be extended with "auto" in the Puma config. |
| 66 | + |
| 67 | +[This related change](https://github.com/rails/rails/commit/142e6ab2c1e3cb7df4b82e20e2a1cd676b755714) addresses this issue and removes the redundant dynamic setting for the value from `puma.rb` |
| 68 | + |
| 69 | +[Improve default action mailer configuration](https://github.com/rails/rails/pull/52513) |
| 70 | +This Pull Request introduces a few improvements to the default Action Mailer configuration setup: |
| 71 | + |
| 72 | +- Suggests a default SMTP server configuration in a comment in `production.rb`. |
| 73 | +- Sets a default example.com host for mailer links in production too. |
| 74 | +- Uses the same comment style in all the env settings for mailer host. |
| 75 | + |
| 76 | +[Make automatic detection of processor count in default Puma config optional and non-default](https://github.com/rails/rails/pull/52533) |
| 77 | +Using `Concurrent.available_processor_count` helper by default in `puma.rb` template might result in incorrect configurations on some cloud hosts with shared CPUs or platforms that inaccurately report CPU counts. |
| 78 | + |
| 79 | +This Pull Request, changes this default configuration to be optional and non-default. |
| 80 | + |
| 81 | +[Let allow_browser allow bots](https://github.com/rails/rails/pull/52531) |
| 82 | +The `allow_browser` feature blocks requests with user agents that don't match a specific set of browser versions. This runs the risk of preventing sites from being crawled by some search engines. |
| 83 | + |
| 84 | +This change fixes this behavior to bypass these version restrictions in the case of certain crawlers and bots. |
| 85 | + |
| 86 | +[Allow disable_extension to be called with schema-qualified name for PostgreSQL](https://github.com/rails/rails/pull/52452) |
| 87 | +This change allows `disable_extension` to be called with schema-qualified name for PostgreSQL. |
| 88 | + |
| 89 | +This adds parity with `enable_extension`, the `disable_extension` method can be called with a schema-qualified |
| 90 | +name (e.g. `disable_extension "myschema.pgcrypto"`). Note that PostgreSQL's `DROP EXTENSION` does not |
| 91 | +actually take a schema name (unlike `CREATE EXTENSION`), so the resulting SQL statement will only name |
| 92 | +the extension, e.g. `DROP EXTENSION IF EXISTS "pgcrypto"`. |
| 93 | + |
| 94 | +_You can view the whole list of changes [here](https://github.com/rails/rails/compare/@%7B2024-07-13%7D...main@%7B2024-07-19%7D)._ |
| 95 | +_We had [36 contributors](https://contributors.rubyonrails.org/contributors/in-time-window/20240803-20240809) to the Rails codebase past week!_ |
| 96 | + |
| 97 | +Until next time! |
| 98 | + |
| 99 | +_[Subscribe](https://world.hey.com/this.week.in.rails) to get these updates mailed to you._ |
0 commit comments