我构建了一个 Ruby gem,这样我就不必再盯着 hash dumps 看了
Source: Dev.to

它的功能是什么?
它将哈希转换为整洁、对齐的表格。
require 'typed_print'
data = [
{ name: "Alice", score: 100, active: true },
{ name: "Bob", score: 42, active: false }
]
TypedPrint.print(data)
Output
Name Score Active
------+------- -------
Alice 100 true
Bob 42 false
就是这样。没有魔法,也不需要脑力解析。
为什么不直接使用 pp 或 awesome_print?
pp可以,但仍然难以浏览。awesome_print很棒,但有时你不想要颜色、JSON 支持或额外的依赖。
我想要一个能够:
- 零必需依赖
- 只生成表格
- 在任何环境下都能工作(Rails、Rake 任务、普通 Ruby 脚本,甚至最小化的 Docker 容器)
你可以用它做什么?
对齐列
TypedPrint.print(data, align: { score: :right })
只显示所需字段
TypedPrint.print(data, only: [:name, :score])
自定义表头
TypedPrint.print(data, headers: { name: "User", score: "Points" })
Markdown 输出(适合文档)
TypedPrint.print(data, format: :markdown)
输出一个符合规范的 Markdown 表格,方便复制到 GitHub README 中。
颜色!(v0.3.0)
TypedPrint.print(data, color: true)
或者完全自定义:
TypedPrint.print(
data,
colors: { name: :cyan, score: :green, active: :yellow }
)
Pastel 是可选的。如果你没有安装,它会忽略颜色而不会报错。
不同数据类型的示例
mixed = [
{ name: "Product A", price: 29.99, in_stock: true, notes: nil },
{ name: "Product B", price: 49.99, in_stock: false, notes: "Limited" }
]
TypedPrint.print(mixed)
Output
Name Price In_stock Notes
----------+-------+---------+-------------
Product A 29.99 true
Product B 49.99 false Limited edition
它会自动处理 nil、布尔值、数字和字符串。
性能如何?
它体积轻巧。零依赖意味着没有隐藏的臃肿。已在 10,000 行数据上测试,仍然足够快,适用于 CLI 工具和调试。对于海量数据,一般不建议直接打印到终端。
适用人群
- 在控制台调试的 Rails 开发者
- 希望输出整洁的 CLI 工具作者
- 任何记录哈希并希望其可读的人
厌倦了 pp 的人。
链接
- RubyGems:
- GitHub:
- 文档:请参阅仓库中的 README。
接下来计划?
我保持它的简洁。没有成为臃肿框架的路线图。如果你有符合“零依赖、只做表格”理念的想法,请提交 Issue。我在收到用户请求后数小时内就实现了 Markdown 支持(那是 v0.2.0)。
尝试使用
gem install typed_print
就是这样。完成了。
如果你觉得它有用,请告诉我。如果发现 bug,也请告诉我。
感谢阅读 🙏