有没有办法向 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 工具。假设我有一个继承自 Thor
的 Cli
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
如何定义在所有命令之前或所有命令之后 运行 的方法?
例如,假设我创建了几个私有方法——我们称它们为 setup
和 teardown
。如何在 version
、something
和 thing
之前制作 setup
运行?我如何在 version
、something
和 thing
之后制作 teardown
运行?
我希望有某种方法可以声明一个钩子方法(类似于Rails'before_action
)这样我就可以避免在每个命令中首先手动调用setup
,并且 teardown
在每个命令中最后。
看起来 Thor gem 中没有执行此类回调的内置方法。 (我认为这会是一个受欢迎的功能,但也许我看问题的方式不对。)
上面的评论指向第三方解决方案,thor-hollaback,但我没有尝试过。
我正在开发由 the Thor gem 提供支持的 CLI 工具。假设我有一个继承自 Thor
的 Cli
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
如何定义在所有命令之前或所有命令之后 运行 的方法?
例如,假设我创建了几个私有方法——我们称它们为 setup
和 teardown
。如何在 version
、something
和 thing
之前制作 setup
运行?我如何在 version
、something
和 thing
之后制作 teardown
运行?
我希望有某种方法可以声明一个钩子方法(类似于Rails'before_action
)这样我就可以避免在每个命令中首先手动调用setup
,并且 teardown
在每个命令中最后。
看起来 Thor gem 中没有执行此类回调的内置方法。 (我认为这会是一个受欢迎的功能,但也许我看问题的方式不对。)
上面的评论指向第三方解决方案,thor-hollaback,但我没有尝试过。