ruby-cli

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Ruby CLI Development

Ruby CLI 开发

Build Ruby CLI tools using Thor for commands and Zeitwerk for autoloading.
使用Thor实现命令,Zeitwerk实现自动加载,构建Ruby CLI工具。

Quick Navigation

快速导航

  • Starting a new CLI gem from scratch? See references/bootstrap.md
  • Adding commands or subcommands? See references/patterns.md
  • Thor syntax reference? See references/patterns.md
  • Rich terminal UI with Gum? See references/gum.md
  • 从零开始创建新的CLI gem? 查看references/bootstrap.md
  • 添加命令或子命令? 查看references/patterns.md
  • Thor语法参考? 查看references/patterns.md
  • 使用Gum打造丰富的终端UI? 查看references/gum.md

Core Principles

核心原则

  • Use compact class declarations:
    class GemName::Cli::Main < GemName::Cli::Base
  • Use
    extend self
    instead of
    module_function
    for utility modules
  • Keep the Base class lean - add helpers as patterns emerge
  • 使用简洁的类声明:
    class GemName::Cli::Main < GemName::Cli::Base
  • 对于工具模块,使用
    extend self
    而非
    module_function
  • 保持Base类精简 - 随着模式出现再添加辅助方法

Output Styling

输出样式

For basic output, use Thor's built-in
say "message", :color
.
For rich terminal UI (headers, tables, spinners, confirmations), use the Gum gem:
ruby
ui.header("Section Title")    # branded header with border
ui.success("Done!")           # green checkmark
ui.error("Failed")            # red X
ui.table(rows, columns: [...]) # formatted table
ui.spin("Working...") { ... } # spinner during work
See references/gum.md for setup and full API.
对于基础输出,使用Thor内置的
say "message", :color
方法。
对于丰富的终端UI(标题、表格、加载动画、确认框),使用Gum gem:
ruby
ui.header("Section Title")    # 带边框的品牌化标题
ui.success("Done!")           # 绿色对勾
ui.error("Failed")            # 红色叉号
ui.table(rows, columns: [...]) # 格式化表格
ui.spin("Working...") { ... } # 执行任务时显示加载动画
查看references/gum.md了解安装和完整API。

Tips & Gotchas

提示与注意事项

  • Add
    # rubocop:disable Rails/Output
    to UI modules (stdout is intentional in CLIs)
  • Gum requires
    brew install gum
    on the host machine
  • 在UI模块中添加
    # rubocop:disable Rails/Output
    注释(CLI中输出到标准输出是有意为之)
  • Gum需要在主机上执行
    brew install gum
    进行安装