花见 3.0:盛开绚烂
从一开始,我们就计划将 Hanami 打造成一种不同的 Ruby 框架:清晰、模块化且可扩展。今天,它已盛开绚烂。我们非常高兴与您分享 Hanami 3.0!此次发布为框架带来了三个重大的新特性:邮件发送器、国际化和 Minitest。除此之外,您的应用默认速度更快,开发者体验更加出色,从您的日志到您的资源,皆有所提升。 一流的邮件发送器 我们久违的宝石回来了!Hanami 应用现在带有集成的邮件发送器,和您的操作、视图及操作组件并肩而立。邮件发送器类描述了您发送电子邮件所需的一切: ```ruby module Bookshelf module Mailers class Welcome < Bookshelf::Mailer from "welcome@bookshelf.test" to { |user:| user.email } subject { |user:| "欢迎来到 Bookshelf,#{user.name}!" } expose :user end end end ``` 作为独立对象,邮件发送器可通过 Deps mixin 注入并在您需要的地方访问。调用 .deliver,邮件发送器将使用您的输入准备头部并渲染邮件正文模板,这些模板作为您视图层的全面扩展。 邮件发送器支持多种发送方式。SMTP 发送开箱即用:只需为您的 SMTP 主机填充一些环境变量即可正常使用。在测试中,您的电子邮件会被累积到内存中,供您检查。如果您需要更多的功能,也可以编写自己的发送方法。除了为这些提供干净的接口外,Hanami Mailer 还提供了钩子,允许将发送选项从邮件发送器贯穿到底,为新发送方法充分利用邮件发送提供者所提供的特性。 像我们所有的宝石一样,Hanami Mailer 也设计为独立使用。查看全面的 README 获取您在 Ruby 应用中使用它所需的一切信息。Hanami Mailer 依赖于久负盛名的 mail gem 来处理所有底层邮件操作。感谢邮件维护人员多年来的辛勤工作! 内置国际化 将您的应用推向全球变得更加简单:国际化现在被内置到 Hanami 中。打包 i18n gem,Hanami 会在您的应用和每一块中设置一个自我包含的翻译后端,并且提供可在您的操作和视图中使用的 translate 和 localize 帮助程序。 您的翻译位于应用或模块中的 config/i18n/ 下: ```yaml # config/i18n/en.yml en: posts: index: title: "最新帖子" create: created: "您的帖子已上线!" greetings: welcome: "欢迎,%{name}!" ``` 从这里开始,i18n 帮助程序无处不在!例如,在您的视图中: ```erb <%# app/templates/posts/index.html.erb %> <h1><%= t(".title") %></h1> ``` 在您的操作中: ```ruby # app/actions/posts/create.rb def handle(request, response) response.flash[:notice] = t(".created") # ... end ``` 在所有其他地方,“i18n”组件只需通过一个 Deps mixin 即可使用: ```ruby class Greeter include Deps["i18n"] def call(name) i18n.t("greetings.welcome", name: name) end end ``` 我们还有本地化功能。localize 为当前区域格式化您的日期和时间,并为英语提供合理的默认值: ```ruby localize(Date.new(2026, 5, 22)) # => "2026年5月22日,周五" localize(Time.new(2026, 5, 22, 9, 5), format: :short) # => "2026年5月22日 9:05 am" ``` 像 Hanami 的每个方面一样,i18n 旨在开箱即用,设置最小,但如果您需要自定义功能则还有许多设置。查看 i18n 指南获取完整信息。没有 i18n gem,您无法拼写国际化,这个 gem 承担了这个新特性的所有重任。所以,一个来自澳大利亚的“大大的感谢,朋友们”给 i18n 的维护者——感谢你们为全球 Rubyist 提供的帮助! 现在有了 Minitest Hanami 一直配备了现成的 RSpec 设置。我们很高兴,终于可以让您中的另一半满意,这要归功于我们全新的 Minitest 支持!在生成应用时选择您的测试框架: ```bash $ hanami new my_app --test=minitest ``` RSpec 仍然是我们的默认选择,但如果选择 Minitest,您将获得同样完整的设置,而无需自己建立一些东西。非常感谢 Ryan Davis 以及所有贡献者在 Minitest 上的工作。Minitest 随 Ruby 一同发布,我们很高兴能使其成为 Hanami 故事的一部分。 默认更快 Hanami 3.0 的速度显著提升,您可以从一开始就享受到这一好处。在测试应用中,相同请求通过 HTTP 运行的速度几乎快了 3 倍,同时内存分配也减少了大部分。Hanami 现在默认缓存您的组件。这意味着您应用容器中的每个组件仅被解析一次,然后重用,而不是每次需要时重新构建。这是您切实感受到的变化。我们对一个操作解析了九个组件的应用进行测量,然后比较在 2.3 和 3.0 的同一请求。在 3.0 中,每个请求的分配减少了 14 倍,吞吐量几乎增加了 3 倍。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡