有一个相关的问题,但我认为这是旧版本的Thor,因为它不再起作用了。
基本上情况是我有一个托尔级。这个类有许多标准的thor命令。我想要做的是将这些命令的逻辑分解到其他类中,这样我就可以更轻松地测试代码了。
所以我创建了一个不从thor继承的Command
类。它看起来像这样:
command.rb
class Command
include Thor::Base
include Thor::Actions
# initializer has only a few arguments, all app specific and not related to thor
def foo
run 'which ps'
end
end
当我从我的主要Thor类运行foo
时,输出什么都没有,它是空的。这是主要的Thor类:
cli.rb
require 'thor'
class CLI < Thor
def hello
require 'command'
Command.new().foo
end
end
如果我从foo
剪切代码并将其放入hello
并将include Thor::Actions
移动到主要的Thor类中,那么它就能正常工作。
这两个文件在同一模块下实际上是名称间隔,但是我从这里的代码示例中删除了这些文件,以尽量减少残缺。
如何让这个工作,所以我可以在非托尔类中使用所有动作模块的方法?
我尝试了解相关问题中的源/目标根和目标堆栈,但它们似乎不再起作用了。