Ruby 如何使用thor';运行';thor类之外的方法?
有一个相关的问题,但我认为这是一个旧版的雷神,因为它不再工作了 基本上情况是我有一门雷神课。这个类有许多标准的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
命令
类。它看起来像这样:
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类中使用所有动作模块的方法?
我试着搞乱相关问题中的源/目标根和目标堆栈,但它们似乎不再起作用了