【问题标题】:Is there a way to add hooks to a Thor class in order to run code before/after all commands?有没有办法向 Thor 类添加钩子以便在所有命令之前/之后运行代码?
【发布时间】:2020-05-17 17:22:01
【问题描述】:

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

【问题讨论】:

  • 没有内置任何东西,但是有一个名为 thor-hollaback 的 gem 实现了回调。

标签: ruby command-line-interface hook thor


【解决方案1】:

看起来在 Thor gem 中没有内置的方法来执行此类回调。 (我认为这将是一个受欢迎的功能,但也许我看错了。)

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

【讨论】:

    猜你喜欢
    • 2022-12-18
    • 2022-01-10
    • 1970-01-01
    • 2015-05-30
    • 2019-07-24
    • 2020-10-24
    • 2017-08-21
    • 2016-11-13
    • 1970-01-01
    相关资源
    最近更新 更多