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

推荐订阅源

WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
MyScale Blog
MyScale Blog
雷峰网
雷峰网
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)
云风的 BLOG
云风的 BLOG
V
V2EX
宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
N
Netflix TechBlog - Medium
Vercel News
Vercel News
美团技术团队
人人都是产品经理
人人都是产品经理
The Cloudflare Blog

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.