惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
D
Docker
GbyAI
GbyAI
宝玉的分享
宝玉的分享
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Vercel News
Vercel News
博客园_首页
Recent Announcements
Recent Announcements
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
S
SegmentFault 最新的问题
Microsoft Security Blog
Microsoft Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
V
V2EX
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
IT之家
IT之家
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

Ruby on Rails: Compress the complexity of modern web apps

Safer to_i coercion, custom to_fs formats, and more! This Week in Rails: May 16, 2026 This Week in Rails: May 8, 2026 This Week in Rails: May 1, 2026 Active Record gets better every week Great big Rails World 2026 update: CFP, Corporate Support tickets, workshops Query command for database queries and more Explicit query: and body: kwargs for integration tests and more! Speedup ActiveRecord::LogSubscriber#sql_color and more! This Week in Rails: March 27, 2026 Rails Versions 8.0.5 and 8.1.3 have been released! Rails Versions 7.2.3.1, 8.0.4.1, and 8.1.2.1 have been released! This Week in Rails: March 20, 2026 Validate URI scheme in Action Text and more This Week in Rails: March 6, 2026 Planning Center is the newest Rails Foundation Contributing member Action Text gets Markdown conversion, editor links in devcontainers, and more! BARRA seeks Rails developer Joe Agliozzo is looking for a Rails developer The rise of lighttpd as the alternative web server When longer is better and more is more Snowdevil: First e-tailer on Rails Natural selection for frameworks in Ruby vs Java Address book tutorial in Portuguese Becoming a better programmer with Rails 10 Things Every Java Programmer Should Know About Ruby Really Getting Started in Rails Off the Treadmill, Onto the Rails Rails 0.9.5: A world of fixes and tweaks Rich clients with Rails and XUL
Rails 7.2 released, Thruster by default for Rails 8, new ...
David Heinemeier Hansson · 2024-08-12 · via Ruby on Rails: Compress the complexity of modern web apps

Hey everyone, Happy Monday! Vipul here with the latest updates for This Week in Rails (from last week 😅). Let’s dive in.

Rails 7.2 has been released
Rails 7.2 has been released!

Head over to the release post for more details, but in short, it ships with better production defaults, Dev containers, new guides design, and much much more!

New Guides Pull Requests for review
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:

Use Thruster by default for Rails 8
Thruster is an asset compression and caching proxy with X-Sendfile acceleration that speeds up simple production-ready deployments of Rails applications. It runs alongside the Puma and usually behind the Kamal 2 proxy, which offers HTTP/2 and SSL auto-certificates, to help your app run efficiently and safely on the open Internet.

This change configures the use of Thruster in the Dockerfile by default, starting with Rails 8.

Speed up ActionDispatch::Routing::Mapper::Scope#[] by merging frame hashes
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.

This Pull Request changes the scope implementation to make the lookup faster by just merging inherited values into the immediate hash.

This helps avoid needless iterations for deeply nested routes leading it to be ~1.2x faster.

Remove redundant Puma configuration settings
This Pull Request removes the following redundant environment settings in puma.rb:

# Specifies the `environment` that Puma will run in.
rails_env = ENV.fetch("RAILS_ENV", "development")
environment rails_env

case rails_env
when "production"
  preload_app!
when "development"
  # Specifies a very generous `worker_timeout` so that the worker
  # isn't killed by Puma when suspended by a debugger.
  worker_timeout 3600
end

These changes address recent Puma upgrades that-

  • Puma now automatically sets its environment from RAILS_ENV.
  • preload_app! is automatically set when in cluster mode.
  • worker_timeout is a cluster mode feature, and we don’t run that in dev.

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.

This related change addresses this issue and removes the redundant dynamic setting for the value from puma.rb

Improve default action mailer configuration
This Pull Request introduces a few improvements to the default Action Mailer configuration setup:

  • Suggests a default SMTP server configuration in a comment in production.rb.
  • Sets a default example.com host for mailer links in production too.
  • Uses the same comment style in all the env settings for mailer host.

Make automatic detection of processor count in default Puma config optional and non-default
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.

This Pull Request, changes this default configuration to be optional and non-default.

Let allow_browser allow bots
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.

This change fixes this behavior to bypass these version restrictions in the case of certain crawlers and bots.

Allow disable_extension to be called with schema-qualified name for PostgreSQL
This change allows disable_extension to be called with schema-qualified name for PostgreSQL.

This adds parity with enable_extension, the disable_extension method can be called with a schema-qualified name (e.g. disable_extension "myschema.pgcrypto"). Note that PostgreSQL’s DROP EXTENSION does not actually take a schema name (unlike CREATE EXTENSION), so the resulting SQL statement will only name the extension, e.g. DROP EXTENSION IF EXISTS "pgcrypto".

You can view the whole list of changes here.
We had 36 contributors to the Rails codebase past week!

Until next time!

Subscribe to get these updates mailed to you.