Hanami 3.0 正式发布,标志着 Ruby 框架 Hanami 进入了全新的发展阶段。作为 Hanakai 组织下的核心项目之一,Hanami 3.0 在保持其清晰、模块化和可扩展的特性基础上,引入了多项重要功能,包括邮件处理、国际化支持和 Minitest 测试框架集成,同时在性能和开发体验上进行了全面优化。本文将详细介绍 Hanami 3.0 的主要特性和改进,帮助开发者快速了解这一版本的最新进展。Hanami 3.0 的核心特性之一是引入了全新的邮件处理功能。邮件处理模块现在与 Hanami 应用的其他组件(如 actions、views 和 operations)无缝集成,开发者可以轻松地定义邮件模板和发送逻辑。邮件处理模块支持多种发送方式,包括 SMTP 发送,并且在测试环境中可以方便地在内存中积累邮件以便检查。
此外,Hanami 3.0 还允许开发者自定义邮件发送方法,以适应不同的邮件服务提供商的特殊需求。邮件处理模块的设计也非常灵活,可以作为独立的 gem 使用,为 Ruby 应用提供强大的邮件处理能力。国际化支持是 Hanami 3.0 另一个重要的改进。Hanami 3.0 内置了国际化(i18n)功能,开发者只需引入 i18n gem 即可在应用中启用多语言支持。翻译文件存储在 config/i18n 目录下,开发者可以方便地管理不同语言的翻译内容。Hanami 3.0 提供了 translate 和 localize 辅助方法,使得在 actions 和 views 中使用国际化功能变得非常简单。
此外,Hanami 3.0 还支持本地化,可以根据当前语言环境格式化日期和时间,提供更好的用户体验。Hanami 3.0 还引入了 Minitest 测试框架的支持。开发者在创建新应用时可以选择使用 Minitest 作为测试框架,Hanami 3.0 会自动配置完整的 Minitest 环境,无需手动设置。虽然 RSpec 仍然是 Hanami 的默认测试框架,但 Minitest 的支持使得开发者可以根据个人偏好选择更适合的测试工具。Minitest 作为 Ruby 标准库的一部分,其性能和稳定性都得到了广泛认可,Hanami 3.0 的 Minitest 支持进一步增强了框架的灵活性。性能优化是 Hanami 3.0 的另一个亮点。
Hanami 3.0 在默认情况下对组件进行了缓存,使得每个组件在应用容器中只解析一次,然后被重复使用,从而显著提升了应用的性能。在测试环境中,Hanami 3.0 的请求处理速度提升了近三倍,内存分配也大幅减少。Hanami 3.0 还对框架的热点部分进行了优化,如 Hanami Action 和 Hanami View,使得最小化的 action 和 view 渲染速度分别提升了 3.7 倍和 2.9 倍。这些性能优化使得 Hanami 3.0 的应用在处理高并发请求时表现更加出色。Hanami 3.0 还对日志系统进行了改进。在开发环境中,日志现在默认以彩色显示,SQL 语句的格式与请求日志保持一致,并且在安装 rouge gem 时还支持语法高亮。
在生产环境中,SQL 语句的日志级别被降低到 debug 级别,以减少日志噪音。开发者可以通过配置 db.log_level 来调整 SQL 日志的级别。此外,Hanami 3.0 还提供了 HANAMI_LOG_LEVEL 环境变量,允许开发者在运行时动态设置日志级别。Hanami 3.0 的日志系统还提供了结构化日志和标记日志的功能,使得日志分析和调试变得更加方便。Hanami 3.0 对资产管理也进行了改进。hanami assets watch 现在可以更好地跟踪新增和删除的入口点,以及静态资产(如图片和字体)的变化。
在之前的版本中,这些变化需要重新启动 watcher,而 Hanami 3.0 可以自动适应这些变化,使得开发者可以更高效地进行开发。此外,Hanami 3.0 还发布了一个规范,允许任何资产打包工具清晰地集成到 Hanami 中。虽然 Hanami 自身的打包工具基于 esbuild,但开发者可以自由选择自己喜欢的打包工具,这进一步增强了 Hanami 的灵活性。Hanami 3.0 还将请求体解析功能从中间件移动到了 Hanami Action 中,使得请求体解析由 action 的 formats 配置驱动。开发者可以方便地配置 action 解析的格式,并且 Hanami 3.0 默认支持 multipart form 体和 JSON 解析。如果需要其他格式的解析,开发者可以自定义解析器。
这种改进使得请求体解析更加灵活和可控。Hanami 3.0 还简化了视图处理。在 Hanami 3.0 中,视图暴露的数据默认不再装饰,开发者可以直接在模板中使用暴露的数据。如果需要装饰数据,Hanami 3.0 提供了 .decorate 方法,使得装饰数据的代码更加清晰。开发者也可以通过配置 config.decorate_exposures = true 来恢复旧版本的行为。这种改进使得视图处理更加简单和直观。
Hanami 3.0 还进行了多项基础设施优化。hanami-controller 现在更名为 hanami-action,与框架中使用的类名保持一致。hanami-validations gem 已被废弃,Hanami Action 现在直接使用 dry-validation 进行参数和合同的验证,减少了中间 gem 的数量。Hanami 3.0 还要求 Ruby 3.3 或更高版本,确保框架在最新的 Ruby 环境中运行。这些改进使得 Hanami 3.0 的代码库更加简洁和易于维护。Hanami 3.0 还引入了多项小的改进和修复。
例如,新增了 hanami generate provider 和 hanami generate mailer 生成器,提供了 --force 选项允许覆盖现有文件,提供了 --name 选项允许设置应用命名空间,提供了 --gem-source=gem.coop 选项允许从 gem.coop 命名空间安装 gem,生成的应用现在默认使用 Puma 7.1,并且移除了 config/puma.rb 中的 app 预加载样板代码。此外,Hanami 3.0 还提供了 --template-engine 选项允许选择模板引擎(erb、haml 或 slim),提供了 explicit redirect helpers 在路由器中,提供了 Hanami::Settings::CompositeStore 允许链式查找多个设置存储,提供了 Hanami::Slice.with_slices 返回切片及其所有嵌套切片,提供了 Hanami View 暴露当前渲染模板的名称,提供了当切片作为 Rack 应用调用时没有可用路由时的有用错误提示,以及各种修复,如 multipart 上传到路由器、带数组变量的 URL 生成、生成 action 时的重复路由等。Hanami 3.0 的发布标志着 Ruby 框架 Hanami 进入了全新的发展阶段。Hanami 3.0 在保持其清晰、模块化和可扩展的特性基础上,引入了多项重要功能和改进,使得开发者可以更高效地构建高性能的 Ruby 应用。Hanami 3.0 的邮件处理、国际化支持和 Minitest 测试框架集成,使得开发者可以更轻松地处理邮件、支持多语言应用和选择更适合的测试工具。Hanami 3.0 的性能优化和日志改进,使得应用在处理高并发请求时表现更加出色,并且日志分析和调试变得更加方便。
Hanami 3.0 的资产管理改进和请求体解析改进,使得开发者可以更高效地管理资产和处理请求体。Hanami 3.0 的视图处理简化和基础设施优化,使得代码库更加简洁和易于维护。Hanami 3.0 的多项小的改进和修复,使得开发者可以更轻松地使用 Hanami 框架。Hanami 3.0 的发布得益于社区的广泛支持和贡献。Hanami 3.0 的开发团队对所有贡献者表示衷心的感谢。Hanami 3.0 的发布也得益于多个赞助商的支持,包括 Sidekiq、Brandon Weaver、Honeybadger、FastRuby.io、AppSignal 和 SerpApi。
Hanami 3.0 的开发团队对所有赞助商表示衷心的感谢。Hanami 3.0 的开发团队希望开发者可以尝试 Hanami 3.0,并加入 Hanami 社区,共同推动 Hanami 框架的发展。Hanami 3.0 的开发团队也希望开发者可以成为 Hanami 的赞助商,支持 Hanami 框架的持续发展。Hanami 3.0 的发布标志着 Ruby 框架 Hanami 进入了全新的发展阶段。Hanami 3.0 在保持其清晰、模块化和可扩展的特性基础上,引入了多项重要功能和改进,使得开发者可以更高效地构建高性能的 Ruby 应用。Hanami 3.0 的邮件处理、国际化支持和 Minitest 测试框架集成,使得开发者可以更轻松地处理邮件、支持多语言应用和选择更适合的测试工具。
Hanami 3.0 的性能优化和日志改进,使得应用在处理高并发请求时表现更加出色,并且日志分析和调试变得更加方便。Hanami 3.0 的资产管理改进和请求体解析改进,使得开发者可以更高效地管理资产和处理请求体。Hanami 3.0 的视图处理简化和基础设施优化,使得代码库更加简洁和易于维护。Hanami 3.0 的多项小的改进和修复,使得开发者可以更轻松地使用 Hanami 框架。Hanami 3.0 的发布得益于社区的广泛支持和贡献,以及多个赞助商的支持。Hanami 3.0 的开发团队希望开发者可以尝试 Hanami 3.0,并加入 Hanami 社区,共同推动 Hanami 框架的发展。
Hanami 3.0 的开发团队也希望开发者可以成为 Hanami 的赞助商,支持 Hanami 框架的持续发展。 。