更多内容请访问 rubyonrails.org:

1. 升级到 Rails 8.0

如果您正在升级现有应用程序,最好在升级前拥有良好的测试覆盖率。如果您还没有升级到 Rails 7.2,您应该先升级到 Rails 7.2,并确保您的应用程序在尝试升级到 Rails 8.0 之前仍能正常运行。在升级 Ruby on Rails 指南中提供了升级时需要注意的事项列表。

2. 主要特性

2.1. Kamal 2

Rails 现在预配置了 Kamal 2 用于部署您的应用程序。Kamal 只需要一个“kamal setup”命令,就可以将一台全新的 Linux 服务器变成应用程序或辅助服务器。

Kamal 2 还包括一个名为 Kamal Proxy 的代理,以取代它最初使用的通用 Traefik 选项。

2.2. Thruster

Dockerfile 已升级,包含了一个名为 Thruster 的新代理,它位于 Puma Web 服务器之前,提供 X-Sendfile 加速、资产缓存和资产压缩。

2.3. Solid Cable

Solid Cable 取代 Redis 作为 pubsub 服务器,用于将 WebSocket 消息从应用程序中继到连接到不同客户端的进程。Solid Cable 默认将发送的消息保存在数据库中一天。

2.4. Solid Cache

Solid Cache 取代 Redis 或 Memcached,用于存储 HTML 片段缓存。

2.5. Solid Queue

Solid Queue 取代了 Redis,以及 Resque、Delayed Job 或 Sidekiq 等独立的作业运行框架。

对于高性能安装,它基于 PostgreSQL 9.5 中首次引入的新的 FOR UPDATE SKIP LOCKED 机制,现在在 MySQL 8.0 及更高版本中也可用。它也适用于 SQLite。

2.6. Propshaft

Propshaft 现在是默认的资产管道,取代了旧的 Sprockets 系统。

2.7. 身份验证

身份验证系统生成器,为基于会话、可重置密码、元数据跟踪的身份验证系统创建了一个起点。

3. Railties

有关详细更改,请参阅变更日志

3.1. 移除

  • 移除已废弃的 config.read_encrypted_secrets

  • 移除已废弃的文件 rails/console/app

  • 移除已废弃的文件 rails/console/helpers

  • 移除通过 Rails::ConsoleMethods 扩展 Rails 控制台的已废弃支持。

3.2. 弃用

  • 废弃 "rails/console/methods" 的引用。

  • 废弃修改 STATS_DIRECTORIES,转而使用 Rails::CodeStatistics.register_directory

  • 废弃 bin/rake stats,转而使用 bin/rails stats

3.3. 显著变更

  • 默认将 Regexp.timeout 设置为 1s,以提高对正则表达式拒绝服务攻击的安全性。

4. Action Cable

有关详细更改,请参阅变更日志

4.1. 移除

4.2. 弃用

4.3. 显著变更

5. Action Pack

有关详细更改,请参阅变更日志

5.1. 移除

  • 移除 Rails.application.config.action_controller.allow_deprecated_parameters_hash_equality

5.2. 弃用

  • 废弃使用多路径绘制路由以加快路由速度。

5.3. 显著变更

  • 引入更安全、更明确的参数处理方法 params#expect,例如 params.expect(table: [ :attr ]) 取代 params.require(:table).permit(:attr)

6. Action View

有关详细更改,请参阅变更日志

6.1. 移除

  • 移除已废弃的对 form_withmodel: 参数传递 nil 的支持。

  • 移除已废弃的对 tag 构建器中向空标签元素传递内容的的支持。

6.2. 弃用

6.3. 显著变更

7. Action Mailer

有关详细更改,请参阅变更日志

7.1. 移除

7.2. 弃用

7.3. 显著变更

8. Active Record

有关详细更改,请参阅变更日志

8.1. 移除

  • 移除已废弃的 config.active_record.commit_transaction_on_non_local_return

  • 移除已废弃的 config.active_record.allow_deprecated_singular_associations_name

  • 移除已废弃的对查找未注册到 Active Record 的数据库适配器的支持。

  • 移除已废弃的对使用关键字参数定义 enum 的支持。

  • 移除已废弃的 config.active_record.warn_on_records_fetched_greater_than

  • 移除已废弃的 config.active_record.sqlite3_deprecated_warning

  • 移除已废弃的 ActiveRecord::ConnectionAdapters::ConnectionPool#connection

  • 移除已废弃的对向 cache_dump_filename 传递数据库名称的支持。

  • 移除已废弃的对设置 ENV["SCHEMA_CACHE"] 的支持。

8.2. 弃用

  • 废弃 SQLite3Adapterretries 选项,转而使用 timeout

8.3. 显著变更

  • 在全新的数据库上运行 db:migrate 现在会在运行迁移之前加载模式。后续调用将运行待处理的迁移。(如果需要从头运行迁移而不是加载模式文件的旧行为,可以通过运行 db:migrate:reset 来实现,这*将在运行迁移之前删除并重新创建数据库*)。

9. Active Storage

有关详细更改,请参阅变更日志

9.1. 移除

9.2. 弃用

  • 废弃 Active Storage 的 Azure 后端。

9.3. 显著变更

10. Active Model

有关详细更改,请参阅变更日志

10.1. 移除

10.2. 弃用

10.3. 显著变更

11. Active Support

有关详细更改,请参阅变更日志

11.1. 移除

  • 移除已废弃的 ActiveSupport::ProxyObject

  • 移除已废弃的对使用 @ 前缀设置 attr_internal_naming_format 的支持。

  • 移除已废弃的对向 ActiveSupport::Deprecation#warn 传递字符串数组的支持。

11.2. 弃用

  • 废弃 Benchmark.ms

  • 废弃 TimeActiveSupport::TimeWithZone 之间的加法和 since 方法。

11.3. 显著变更

12. Active Job

有关详细更改,请参阅变更日志

12.1. 移除

  • 移除已废弃的 config.active_job.use_big_decimal_serializer

12.2. 弃用

  • 废弃 enqueue_after_transaction_commit

  • 废弃内部 SuckerPunch 适配器,转而使用 sucker_punch gem 中包含的适配器。

12.3. 显著变更

13. Action Text

有关详细更改,请参阅变更日志

13.1. 移除

13.2. 弃用

13.3. 显著变更

14. Action Mailbox

有关详细更改,请参阅变更日志

14.1. 移除

14.2. 弃用

14.3. 显著变更

15. Ruby on Rails 指南

有关详细更改,请参阅变更日志

15.1. 显著变更

16. 致谢

请参阅Rails 贡献者完整列表,感谢许多人花费大量时间使 Rails 成为一个稳定而健壮的框架。向他们所有人致敬。



回到顶部