Ruby on Rails 8.0 发布,引入 Kamal 2 以改进部署

科技   2024-12-17 15:16   辽宁  

作者 | Aditya Kulkarni
译者 | 平川
策划 | Tina

最近,Ruby on Rails 推出 8.0 版本,引入了旨在简化部署、提高性能和减少依赖的更新。

David Heinemeier Hansson 是 Ruby on Rails 的创建者、37signals 公司的共同所有人兼首席技术官。他在一篇博文中宣布了这些重大改进。Rails 8 提供了一种部署工具 Kamal 2,可以减少开发人员将应用程序部署到云虚拟机或内部服务器的工作量。只需执行一条 kamal setup 命令,开发人员就能快速配置用于生产环境的服务器。该功能使用 Dockerfile 生成生产就绪的容器镜像,不需要像 Nginx 等这样的 Web 服务器。

Dockerfile 中包含 Thruster,这是一个用于 X-Sendfile 加速、资产缓存和压缩的新代理。这进一步使得 Rails 容器开箱就是互联网就绪的。

Kamal 2 还引入了 Kamal Proxy,取代 Traefik 成为默认代理。它支持零停机部署、通过 Let's Encrypt 自动生成 SSL 证书,以及在单个服务器上托管多个应用程序,所有这些都无需任何复杂的配置。此外,Kamal 2 还内置集成了密码管理器(如 1Password 和 Bitwarden),以实现安全的密码管理,并提供了用于远程命令执行的别名。

为了简化部署所需的附属服务,Rails 8 引入了三种基于 SQLite 的适配器。Solid Cable 代替 Redis 用于 WebSocket 消息中继,提供数据库内消息存储,以实现高效调试。Solid Cache 利用磁盘存储提供经济高效、可扩展的缓存解决方案。它支持更大的数据集以及加密和保留策略等高级功能。Solid Queue 将作业队列直接集成到了 SQLite 或其他数据库中,不再需要单独的作业运行框架,如 Sidekiq。它支持并发控制、失败重试和作业调度等鲁棒性功能。

Rails 8 替换了旧的 Sprockets 系统,并引入 Propshaft 作为新的默认资产管道。Propshaft 与 Rails 的 #NOBUILD 理念一致,将资产管理简化为两个核心功能:为资产提供加载路径,并用摘要标记,以实现友好地缓存过期。这种方法既融合了现代 Web 开发实践,又保持了现有应用程序与 Sprockets 的向后兼容性。

正如我们在 LinkedIn 和 Hacker News 上看到的那样,技术社区对 Rails 8 的发布表示了欢迎。Hansson 发在 LinkedIn 上的博文获得了 1308 次响应,社区称赞 Rails 8 改变了游戏规则,不再依赖于定制主机。

对于非 Ruby 开发人员来说,Hacker News 社区成员 faizshah 建议观看 Hansson 在 Rails World 大会上发表的关于 Rails 8 的演讲,看前 30 分钟就可以,并进一步指出:

Rails 8 的理念是摒弃追随潮流的做法,努力摒弃一些在业界已经流行的想法(比如不敢碰 Linux 服务器或实现自己的 auth)。真是发人深省。

在身份验证方面,Rails 8 将身份验证工具整合到一个生成器中。该生成器可以创建完备的基于会话的系统,并且具有密码重置功能。通过运行 bin/rails generate authentication,开发人员可以快速设置基本模型(如 User、Session)、控制器(如 SessionsController)和邮件发送器(如 PasswordsMailer)。这一功能简化了安全身份验证的实现,而且不依赖于第三方解决方案。

Rails 8 删除了所有组件中的过时功能。像 config.read_encrypted_secrets 这样的过时配置以及 Active Record 中的遗留方法(如支持未注册的数据库适配器)现在均已删除。此外,Action View 中的过时行为(如向 form_with 传递 nil)也已删除。

Rails 8 还使用 Regexp.timeout 设置了正则表达式的默认超时时间,从而降低了拒绝服务风险,提高了安全性。

有关变更的详细信息,感兴趣的读者可以查看 Rails 8 更新日志。

原文链接:

https://www.infoq.com/news/2024/12/rails-8-released/

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

2024 年度技术热词来袭,AI 如何在可控生成和降本增效中寻找平衡

OpenAI 史上最长宕机:自研 K8s 成“拦路虎”,导致数小时无法修复

700 多亿打水漂后,这家巨头突然舍弃了无人驾驶出租车业务!新老员工炸锅:刚还在加班、“一群傻瓜”

掀翻牌桌:定义面向未来的开发新范式

InfoQ
为一线互联网公司核心技术人员提供优质内容。科技圈的观察者,前沿技术的传播者。
 最新文章