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

发布: (2026年5月8日 GMT+8 22:58)
4 分钟阅读
原文: Dev.to

Source: Dev.to

封面图:我构建了一个 Ruby gem,这样我就不必再盯着哈希转储看了

它的功能是什么?

它将哈希转换为整洁、对齐的表格。

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  

就是这样。没有魔法,也不需要脑力解析。

为什么不直接使用 ppawesome_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,也请告诉我。

感谢阅读 🙏

0 浏览
Back to Blog

相关文章

阅读更多 »