这个版本的 Rails 在概念构思上已经酝酿了数年。它实现了我们的愿景,即为 Web 开发提供一种真正全栈的方法,能够以同等的力度解决前端和后端挑战。这就像一份包含从开胃菜到甜点的 omakase 菜单。
这个愿景在几年前是不可能实现的。我们还没有核心技术。但随着浏览器对 ES6/ESM 的支持不断进步,HTTP/2 的广泛采用,以及 令人兴奋的 import maps 新标准,这一切终于成为可能。Rails 7 利用了所有这些进步,提供了 默认不依赖 Node 的前端方法——而不会牺牲对 npm 包 的访问或现代 JavaScript 的使用。
Hotwire 将 Turbo 和 Stimulus 相结合,提供了生产出色的用户体验所需的所有工具,与单页应用程序相比,几乎没有遗漏——而复杂性却大大降低。这是新 Rails 应用程序的默认选择,取代了功能更为有限的 Turbolinks 和 Rails UJS。
虽然由于这些默认设置,大多数 Rails 应用程序不需要依赖 Node,但我们仍然在 Rails 7 中大幅改进了那些确实需要 Node 的应用程序的集成体验。
与 Webpacker 紧密耦合的 Webpack 模式已经消失,取而代之的是 与您可能偏好的任何 JavaScript 打包器松散耦合的集成。无论您喜欢 esbuild(如今谁不爱呢!)还是 rollup.js 甚至是 Webpack,您都可以通过新的 jsbundling-rails 集成来使用它们,该集成可以通过 ` --javascript esbuild` 为新应用程序进行预配置。
对于依赖 Node 的 CSS 打包器,我们采用了相同的方法。在 Rails 7 中,它们只需要能够生成一个编译后的 `application.css` 文件即可完美集成。从 Tailwind CSS 到 Bootstrap,从 Dart 驱动的 Sass 到 PostCSS。如果您愿意接受 Node 依赖的复杂性,您可以使用 `--css bootstrap` 为您的新 Rails 应用程序预先配置任何一种,它将使用 cssbundling-rails。(仅针对 Tailwind,我们还有一个版本可以在没有 Node 依赖的情况下工作!)
这些是我们为 Rails 前端开发提供的有史以来最好的默认选择。不依赖 Node 的默认路径极其简单、功能强大,并且正在朝着未来前端开发的必然方向发展。与 Node 集成的替代路径则更轻量、不那么刻板、也比以往任何时候都更不容易出错。
当然,这还不是全部!虽然 Rails 7 的核心理念是重塑前端解决方案,但还有许多其他进步值得庆祝。比如我们 全新的网站!由 Basecamp 设计师 Sean Mitchell 共同创建。新的外观也被应用到了新应用程序的启动屏幕。我还录制了一个新的演示视频来展示这个框架。
以下是许多其他新功能和改进中的一部分
我们从 HEY 中提取了 Active Record 加密属性,因此您的应用程序除了传统的静态加密和传输中加密之外,还可以提供工作时加密。
作为直接的实际好处,加密敏感属性增加了额外的安全层。例如,如果攻击者访问了您的数据库、数据库快照或应用程序日志,他们将无法理解加密的信息。即使不考虑恶意行为者,出于正当理由检查应用程序日志也不应暴露客户的个人信息。
但更重要的是,通过使用 Active Record 加密,您可以在代码层面定义应用程序中什么构成敏感信息。这使得您可以控制这些信息的访问方式并围绕它们构建服务。例如,可以考虑受保护加密数据的可审计 Rails 控制台,或者检查内置系统以自动过滤控制器参数。
查看 关于如何使用加密属性的完整指南。
近十年前,Marginalia 从 Basecamp 中提取出来,通过 SQL 注释标签来追踪查询源。现在,这个外部 gem 已被 合并到 Active Record 中,称为 QueryLogs。
当您的控制器操作需要加载两个不相关的查询时,现在可以通过 Relation#load_async 并发加载。如果您有三个复杂的查询,每个查询耗时 100 毫秒,那么以前您需要花费 300 毫秒逐个执行。现在您可以并行运行它们,总共只花费 100 毫秒。
Rails 中的自动加载是那些令人惊叹的便利功能之一,很容易被视为理所当然。老旧的 `const_missing` 方法,存在一系列的怪癖和缺失的功能,现在已被 Zeitwerk 代码加载器 完全取代。有一些升级的注意事项需要注意,尤其是对于旧应用程序,但有了这个 升级指南,您将很快上手。
libvips 作为其 默认变体处理器。自去年发布 6.1 版本以来,Rails 7 已经 提交了超过四千次提交。这是数百名贡献者的工作成果,其中许多人是第一次贡献。他们加入了多年来为 Rails 代码库做出贡献的 超过六千名贡献者 的行列!
所有这些工作都在开发阶段经过了数千个应用程序的严格审查,像 Shopify、GitHub、Basecamp 和 HEY 这样的知名应用程序都在生产环境中运行着最终版本或与之接近的版本!
现在是参与 Ruby on Rails 的绝佳时机。该框架上构建的最大应用程序一直在不断 创造新的覆盖和规模记录。最优秀的 Rails 开发人员的招聘竞争比以往任何时候都更加激烈。新贡献者的涌入持续推动着框架 每周向前发展。
我们希望您享受这段旅程!