欢迎使用 Rails 7 的第一个 alpha 版本。它为我们如何使用 JavaScript 提供了一些非常激动人心的新答案,一个与 Active Record 一起使用的工作时加密的强大方法,SQL 查询来源记录、异步查询加载、通过 Zeitwerk 独占的自动加载等等。
我们通常不会为 Rails 发布 alpha 版本,但考虑到新的前端方法是一个如此重大的变化,我们认为在直接进入 beta -> 发布候选 -> 最终版本之前,最好进一步验证一下。
请帮助我们测试所有这些新功能,以便我们能够确保今年发布一个稳定的最终版本 Rails 7!
在使用 Webpacker 作为我们在 Rails 中编写现代 JavaScript 的默认答案近五年后,是时候继续前进了。浏览器对 ES6/ESM 的支持进步,HTTP/2 的广泛采用以及 激动人心的新导入地图标准 为 铺平了道路,使 Rails 7 中的 JavaScript 采用无 Node 的方法 – 无需放弃 npm 包.
与 Hotwire 组合的 Stimulus 和 Turbo 取代 Turbolinks 和 Rails UJS 一样,我们现在拥有最完整的开箱即用的前端设置,可以用于编写出色的 Rails 应用程序。无需在 node_modules
中拥有数千个节点依赖项,无需与 bundler 配置作斗争,也无需处理 JavaScript 开发中常见的任何其他挑战。
与此同时,我们还 极大地改进了 Rails 与 JavaScript + CSS 捆绑器之间的集成,这些捆绑器适用于那些需要它们的人。通过两个新的配套 gem,可以通过 rails new –javascript [bundler] 和 –css [bundler] 触发,您可以轻松访问开始一个新应用程序或更改一个使用导入地图开始的应用程序,以使用 esbuild、rollup.js、Webpack、Tailwind CSS、PostCSS、Dart Sass 和 Bootstrap.
从 HEY 中提取,我们在 Active Record 中添加了加密属性,因此您的应用程序除了传统的静止状态和传输过程中的加密之外,还可以提供工作时加密。
作为一项直接的实际益处,对敏感属性进行加密可以添加额外的安全层。例如,如果攻击者获得了对您的数据库、数据库快照或应用程序日志的访问权限,他们将无法理解加密信息。即使不用考虑恶意行为者,出于合法原因检查应用程序日志也不应该泄露客户的个人信息。
但更重要的是,通过使用 Active Record Encryption,您可以在代码级别定义构成应用程序中敏感信息的因素。这使得能够控制如何访问此信息,并在其周围构建服务。例如,可以考虑保护加密数据的可审计 Rails 控制台,或检查内置系统以自动过滤控制器参数。
查看 有关如何使用加密属性的完整指南。
大约十年前,Marginalia 从 Basecamp 中提取出来,用于使用 SQL 注释标记跟踪查询来源。现在,这个外部 gem 已 上游到 Active Record 中,成为 QueryLogs.
当您的控制器操作需要加载两个无关的查询时,您现在可以通过 Relation#load_async 并发执行此操作。如果您有三个复杂的查询,每个查询都需要 100 毫秒才能执行,您之前必须依次执行它们,花费 300 毫秒。现在您可以并行运行它们,总共只需要花费 100 毫秒即可完成。
Rails 中的自动加载是那些神奇的生活质量现实之一,很容易被人们认为是理所当然的。与一系列怪癖和缺少的功能一起出现的可靠的旧 const_missing
方法终于被 Zeitwerk 代码加载器 独占地取代了。有一些升级需要注意,特别是对于较旧的应用程序,但有了这个 升级指南,您应该很快就能上手。
libvips
作为其 默认变体处理器.自去年我们发布版本 6.1 以来,Rails 7 中已 进行了超过三千次提交。这是数百位贡献者的工作。包括 今年仅有 200 多位首次贡献者。他们加入了 近六千位贡献者,这些贡献者多年来一直在 Rails 代码库中做出更改!