用途:这是 Rails 知识补丁,提供升级敏感的默认值与常见实现路径的快速参考。修改对应子系统前应先加载主题文件,参考文件含完整行为细节和边缘情况。参考索引涵盖五类:Active Job 与 Solid Queue、Active Record 与数据库、运维/可观测性/部署、升级与兼容性、Web/资源/存储。
主要能力与要点:Active Record 事务块中的 return、break、throw 不再隐式回滚,需在事务对象上注册提交后工作,如 transaction.after_commit { … },或使用 ActiveRecord.after_all_transactions_commit;enum 需用关键字式定义,serialize 需传 coder: 与 type:,并移除 add_foreign_key 的 deferrable: true、merge 的 rewhere、ConnectionPool#connection 等已删除调用;establish_connection 不再立即置 connection.active? 为 true,需要时调用 verify!。控制器与视图方面,不要将 ActionController::Parameters 与 Hash 比较,show_exceptions 改用符号值,void 元素构建器不再接受内容,一次只声明一个路由路径,查询解析对根键前导 [ 按字面处理且不再按分号拆分。
Active Job:事务内入队默认等待提交、回滚时丢弃;作业级配置为布尔型 self.enqueue_after_transaction_commit = true,已移除符号值与全局设置。长任务可用 ActiveJob::Continuable 分步推进游标,如 step.advance! from: record.id。移除 BigDecimal 原始序列化、数字 scheduled_at 与 retry_on wait: :exponentially_longer。
Solid Queue:生产通常使用独立队列数据库 db/queue_schema.rb、config/queue.yml、config/recurring.yml 与 bin/jobs,每个额外环境需单独准备数据库;worker 线程数不超过队列数据库连接池减二;同队列内数字优先级小者先运行,0 为默认;async 监督模式仅在不需要进程隔离时使用。
数据库:新库上 db:migrate 先加载 schema;db:migrate:reset 支持多数据库;db:prepare 默认只给主库播种。连接池用 max_connections,可选 min_connections、keepalive、max_age。SQLite 需 3.23.0+,PostgreSQL 9.5+,MySQL 5.6.4+。
Web 与存储:Propshaft 预编译 config.assets.paths 下所有文件,可用 integrity_hash_algorithm 配置 SRI;Turbo 支持 morph 刷新元标签与 refresh="morph" 的 src 框架;Active Storage 每次请求接受一个字节范围,默认上限 100 MB。
运维:生成的 Puma 配置使用三个线程(原为五),需重算并发;Dockerfile 使用 jemalloc,BACKTRACE 关闭回溯清理;Rails.event 提供结构化事件与订阅。Kamal 2 就地迁移需先用 Kamal 1.9.x 成功部署,再将密钥转为 .kamal/secrets 并用 kamal config 校验。
限制:这是知识速查,非独立可安装工具;资料未提供价格、收费、平台与安装命令等,暂未提供。