是否可以创建一个接受 namespace 的基于Thor的Ruby可执行文件?例如,要从命令行允许以下内容:./thorfile greet:formal
鉴于我有以下thorfile:

#!/usr/bin/env ruby

require 'rubygems'
require 'thor'

class TalkTasks < Thor
  namespace       "talk"

  desc      "greet", "says hello"
  def greet
    puts "Hello!"
  end

  class Formal < Thor
    namespace "talk:formal"

    desc    "greet", "says a formal hello"
    def greet
      puts "Good evening!"
    end
  end

end

TalkTasks.start

此thorfile提供以下任务(thor -T):
thor talk:formal:greet  # says a formal hello
thor talk:greet         # says hello

我还可以将thorfile直接用作可执行文件:
./thorfile greet

显示:



我如何获取./thorfile formal:greet(或类似的东西)来执行Formal类中的greet方法,以便显示:

最佳答案

更改Formal类的 namespace

class Formal < Thor
    namespace "formal"
    ...
end

您已经嵌套了类,因此命名空间也嵌套了。如果您将它们分开,则可以执行talk:formal,没有时间对其进行测试。应该管用。

09-07 08:37