如何创建thor :: group生成器作为my_command的args
在我的gem中,我想要一个带有args的可执行命令,如下所示:
foo generate project foo generate config foo say_hi
所以我做了
富/斌/富
#!/usr/bin/env ruby require 'foo' Foo::Foo.start
和Foo文件在foo / lib / thor / foo.rb中
module Foo class Foo < Thor desc "generate [WHAT]" def generate(*args) end desc "say_hi" def say_hi(*args) .... end end end
和foo / lib / thor / generators / project.rb和foo / lib / thor / generators / config.rb
我想在哪里指定inheritance自Thor :: Group的类,如katz示例…
module Foo module Generators class Project < Thor::Group include Thor::Actions .... end end end
所以我的问题是:如何设置,以便我可以从可执行文件调用这些生成器,如:
foo generate config
我甚至走在正确的轨道上吗? 理想情况下, say_hi
输入foo
应该为say_hi
和所有生成器提供帮助。
我也很难在最初工作。 这是我开始使用的模式:
$ cat cli.rb
#!/usr/bin/env ruby require 'rubygems' require 'thor' require 'thor/group' module CLI class Greeter < Thor::Group def say_hi say "Hi" end def say_goodbye say "Goodbye" end end end module CLI class Crud < Thor desc 'create', 'Creates a sub-thing' def create say "Creating a sub-thing" end desc 'delete', 'Deletes a sub-thing' def delete say "Deleting a sub-thing" end end end module CLI class Root < Thor register CLI::Greeter, 'greet', 'greet', 'Executes a multi-step subtask' register CLI::Crud, 'crud', 'crud [COMMAND]', 'Delegates to a sub-command' end end CLI::Root.start
$ ./cli.rb
Tasks: cli.rb crud [COMMAND] # Delegates to a sub-command cli.rb greet # Executes a multi-step subtask cli.rb help [TASK] # Describe available tasks or one specific task
$ ./cli.rb问候
Hi Goodbye
$ ./cli.rb crud
Tasks: cli.rb crud create # Creates a sub-thing cli.rb crud delete # Deletes a sub-thing cli.rb crud help [COMMAND] # Describe subcommands or one specific subcommand
$ ./cli.rb crud创建
Creating a sub-thing
$ ./cli.rb crud删除
Deleting a sub-thing
- 如何解决bundle install rake error和Gem :: RemoteFetcher :: FetchError
- 脱机服务器上的Ruby gem依赖项
- Ruby的最佳YouTubegem?
- 部署到heroku时Bundler gem兼容性问题。
- OSX Mavericks之后无法加载此类文件 – 脚本/../config / boot(LoadError)
- Facebook Graph API的gem
- 无法从rubygems.org安装’cocoapods’gem(错误的响应后端读取错误)
- gem install json失败,重新定义了struct timezone / timespec
- 获取谷歌搜索结果的正确方法是什么?