Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何将Thor::Group注册为带参数的子命令_Ruby_Gem_Thor - Fatal编程技术网

Ruby 如何将Thor::Group注册为带参数的子命令

Ruby 如何将Thor::Group注册为带参数的子命令,ruby,gem,thor,Ruby,Gem,Thor,这个问题开始了。但随着我对雷神了解的加深,情况发生了重大变化 我试图创建一个Thor::Group子命令,它接受一个参数。奇怪的是,如果没有争论,它就会起作用 我可以使用Thor::Group作为子命令吗 当我键入:foo counter foo/bin/foo 它回答:计数器调用不正确。以foo计数器号码呼叫我有一个解决方案。我使用的不是Thor::Group,而是调用 bin/foo如下所示: #!/usr/bin/env ruby require 'foo' Foo::CLI.star

这个问题开始了。但随着我对雷神了解的加深,情况发生了重大变化

我试图创建一个Thor::Group子命令,它接受一个参数。奇怪的是,如果没有争论,它就会起作用

我可以使用Thor::Group作为子命令吗

当我键入:
foo counter

foo/bin/foo


它回答:
计数器调用不正确。以foo计数器号码呼叫

我有一个解决方案。我使用的不是Thor::Group,而是调用

bin/foo如下所示:

#!/usr/bin/env ruby

require 'foo'

Foo::CLI.start
module Foo

  class Generate < Thor

    desc "project [name]", "Prints the project making step"
    def project(name)
      puts "making first project file #{name}"
      invoke :config
      invoke :project_sub
    end

    desc "config [name]", "Prints the config making step"
    def config(name)
      puts "making first config file #{name}"
      invoke :project_sub
    end

    desc "project_sub [name]", "Prints the project_sub making step"
    def project_sub(name)
      puts "making subsystem file #{name}"
    end

    def self.banner(task, namespace = false, subcommand = true)
       task.formatted_usage(self, true, subcommand).split(':').join(' ')
    end

  end

end
lib/cli.rb-将“generate”注册为基本命令foo:

module Foo
  class CLI < Thor
    register(Generate, 'generate', 'generate [something]', 'Type foo generate for more help.')
  end
end
请注意横幅覆盖。这意味着键入带有无效或缺少参数的:
foo generate project
,将给出正确的帮助消息:

"project" was called incorrectly. Call as "foo generate project [name]".
相对于

"project" was called incorrectly. Call as "foo project [name]".
> making first project file fred
> making first config file fred
> making subsystem file fred
"project" was called incorrectly. Call as "foo generate project [name]".
"project" was called incorrectly. Call as "foo project [name]".