【发布时间】:2020-05-17 17:22:01
【问题描述】:
我正在开发一个由 the Thor gem 提供支持的 CLI 工具。假设我有一个继承自 Thor 的 Cli 类,它定义了一个 CLI 工具,其中包含一些与之相关的命令:
class Cli < Thor
def version
# Prints out the version
end
def something
# Does something else
end
def thing
# Does a different thing
end
end
如何定义在所有命令之前或在所有命令之后运行的方法?
例如,假设我创建了几个私有方法 - 我们称它们为 setup 和 teardown。如何让setup 在version、something 和thing 之前运行?我怎样才能让teardown 在version、something 和thing 之后运行?
我希望有某种方式来声明一个钩子方法(类似于 Rails 的before_action),这样我就可以避免在每个命令中首先手动调用setup,在每个命令中最后手动调用teardown。
【问题讨论】:
-
没有内置任何东西,但是有一个名为 thor-hollaback 的 gem 实现了回调。
标签: ruby command-line-interface hook thor