有没有一种方法可以将钩子添加到Thor类中,以便在所有命令之前/之后运行代码?

时间:2020-05-17 17:22:01

标签: ruby command-line-interface hook thor

我正在使用由the Thor gem支持的CLI工具。假设我有一个Cli继承自Thor的类,该类定义了一个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。如何使setupversionsomethingthing之前运行?以及如何使teardownversionsomethingthing之后运行?

我希望有一种方法可以声明一个钩子方法(类似于Rails的before_action),因此我可以避免在每个命令中先手动调用setup,然后teardown在每个命令中都是最后一个。

1 个答案:

答案 0 :(得分:0)

似乎在Thor的gem中没有内置的方法来进行此类回调。 (我认为这将是一个流行的功能,但也许我正在以错误的方式看待事物。)

以上评论指向第三方解决方案thor-hollaback,但我尚未尝试过。