有没有办法向 Thor class 添加挂钩,以便 运行 编码 before/after 所有命令?

Is there a way to add hooks to a Thor class in order to run code before/after all commands?

我正在开发由 the Thor gem 提供支持的 CLI 工具。假设我有一个继承自 ThorCli class,它定义了一个 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

如何定义在所有命令之前或所有命令之后 运行 的方法?

例如,假设我创建了几个私有方法——我们称它们为 setupteardown。如何在 versionsomethingthing 之前制作 setup 运行?我如何在 versionsomethingthing 之后制作 teardown 运行?

我希望有某种方法可以声明一个钩子方法(类似于Rails'before_action)这样我就可以避免在每个命令中首先手动调用setup,并且 teardown 在每个命令中最后。

看起来 Thor gem 中没有执行此类回调的内置方法。 (我认为这会是一个受欢迎的功能,但也许我看问题的方式不对。)

上面的评论指向第三方解决方案,thor-hollaback,但我没有尝试过。