Ruby 如何使用thor';运行';thor类之外的方法?

Ruby 如何使用thor';运行';thor类之外的方法?,ruby,command-line,thor,Ruby,Command Line,Thor,有一个相关的问题,但我认为这是一个旧版的雷神,因为它不再工作了 基本上情况是我有一门雷神课。这个类有许多标准的thor命令。我想做的是将这些命令的逻辑分解成其他类,这样我可以更容易地测试代码 所以我创建了一个不从thor继承的命令类。它看起来像这样: command.rb class Command include Thor::Base include Thor::Actions # initializer has only a few arguments, all app spe

有一个相关的问题,但我认为这是一个旧版的雷神,因为它不再工作了

基本上情况是我有一门雷神课。这个类有许多标准的thor命令。我想做的是将这些命令的逻辑分解成其他类,这样我可以更容易地测试代码

所以我创建了一个不从thor继承的
命令
类。它看起来像这样:

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
require 'thor'

class CLI < Thor
  def hello
    require 'command'
    Command.new().foo
  end
end
当我从我的主thor类运行
foo
时,输出是空的。这是雷神的主要职业:

cli.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
require 'thor'

class CLI < Thor
  def hello
    require 'command'
    Command.new().foo
  end
end
require'thor'
类CLI
如果我从
foo
中剪切代码并将其放入
hello
中,然后将
include Thor::Actions
移动到主Thor类中,那么它就可以工作了

这两个文件实际上都是在同一个模块下用名称隔开的,但我从这里的代码示例中删除了这个名称,以尽量减少粗枝大叶

我如何才能让它工作,以便在非thor类中使用所有动作模块的方法?

我试着搞乱相关问题中的源/目标根和目标堆栈,但它们似乎不再起作用了