如何在Thor类之外使用thor'run'方法?

时间:2014-02-15 22:01:56

标签: ruby command-line thor

有一个相关的问题,但我认为这是旧版本的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类中,那么它就能正常工作。

这两个文件在同一模块下实际上是名称间隔,但是我从这里的代码示例中删除了这些文件,以尽量减少残缺。

如何让这个工作,所以我可以在非托尔类中使用所有动作模块的方法?

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

0 个答案:

没有答案