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

推荐订阅源

The Cloudflare Blog
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tailwind CSS Blog
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
博客园 - 司徒正美
V
Visual Studio Blog
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
aimingoo的专栏
aimingoo的专栏
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
博客园 - 聂微东
S
SegmentFault 最新的问题
T
The Blog of Author Tim Ferriss
D
Docker
Vercel News
Vercel News
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
爱范儿
爱范儿
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏

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 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! Florian Weber launches bellybutton.de 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
This Week in Rails: May 8, 2026
zzak · 2026-05-08 · via Ruby on Rails: Compress the complexity of modern web apps

Hi, it’s zzak. This week was full of changes, so grab a seat, there’s a lot to cover.

New Accessibility Guide open for review
The Rails Foundation is working on a new Rails-flavored Accessibility Guide, covering semantic HTML, ARIA, page structure, forms, Turbo interactions, CSS, and testing. Please take a look and share feedback on the pull request.

Add ActiveJob::Attributes to persist data between steps
Active Job can now declare typed attributes that are serialized with the job and restored on resume, removing the need to override serialize and deserialize.

class SubmitEnrollmentJob < ApplicationJob
  include ActiveJob::Continuable
  attribute :payment_token, :string
end

Add datalist to FormBuilder
Form builders now support f.datalist, deriving the datalist’s ID from the builder object and method so text fields can point to it with list:.

Add datalist_tag to create datalist form elements
Action View now has a datalist_tag helper for generating standalone HTML datalist elements and option values.

Add delete: true option to Rails.cache.read
Rails.cache.read("otp", delete: true) atomically reads and deletes Redis-backed cache entries using GETDEL, a good fit for single-use values like OTPs.

Add ActionController::Parameters#fetch_values for multi-key fetching
ActionController::Parameters#fetch_values works like Hash#fetch_values, returning multiple required values or yielding defaults for missing keys.

Accept Active Record Encryption credentials as ENV
Active Record Encryption can now read primary_key, deterministic_key, and key_derivation_salt from environment variables via Rails.app.creds.

Add conflicting record ID to validates_uniqueness_of error details
Uniqueness validation errors now include :existing_id in errors.details, making it easier for APIs to point clients at the conflicting record.

Deactivate ViewReloader hooks when reloaders are cleared
ViewReloader#deactivate removes its resolver hook when reloaders are cleared, avoiding unnecessary filesystem scans in forked processes.

Defer ViewReloader build when no view paths are registered
View watcher setup is delayed until view paths exist, avoiding early empty watchers that could trigger repeated rebuilds later.

Fix image analyzer reporting wrong dimensions for mirrored EXIF orientations
Active Storage image analyzers now swap width and height only for EXIF orientations 5, 6, 7, and 8, the cases that rotate by 90 or 270 degrees.

Define as_json on ActiveStorage::Attached::One and Attached::Many
Active Storage attachment proxies now serialize to their attachment record JSON, avoiding recursive to_json calls through the owning record.

Gracefully handle nil during multi-parameter assignment
Active Record now treats nil like a blank value during multi-parameter assignment, so date/time parts submitted as nil resolve cleanly to nil.

Skip CreateUsers migration when User model already exists
The authentication generator now skips its CreateUsers migration when app/models/user.rb already exists, preventing duplicate table migration failures.

Introduce ActiveSupport::TestCase.around
ActiveSupport::TestCase now supports around callbacks that wrap setup, the test body, and teardown.

Render Hash and keyword options as dasherized HTML attributes
Tag helpers now render nested hash and keyword options as dasherized HTML attributes, making attributes like hx-post and hx-swap easier to generate.

Action View: Document TagBuilder as part of the public interface
ActionView::Helpers::TagHelper::TagBuilder is now part of the public API documentation, making tag.attributes and generated tag methods like tag.div easier to discover.

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

Until next time!

Subscribe to get these updates mailed to you.