我正在使用Thor为我正在制作的Rubygem创建CLI。理想情况下,可执行文件会采用类似myapppath/to/file的命令,从某种意义上说,我希望用户不必定义任务,只需定义一个参数。我查看了API但default_task仅在不存在任务/参数时有效。如何让Thor将这个可变文件参数发送到默认方法/任务,而不是将其解释为不存在的任务? 最佳答案 我的应用程序路径/到/文件两部分答案:1)myapp...要使用“thor”以外的可执行文件,您需要使用“thor/runner”库。2)path/to/file可以在initiali
我有一个gem,my_gem,它具有thor作为运行时依赖项。我在gem中有一个Thor的子类:lib/tasks/task.thor我可以从gem的源目录运行:bundlethortask:my_taskmy_task将被执行。但是,如果我在另一个项目的Gemfile中包含my_gem,当我运行时:bundlethortask:my_task我得到:Nothortasksavailable我做错了什么? 最佳答案 在我看来,如果我理解正确的话,您的lib/tasks/task.thor实际上是gem本身的一部分,并且您希望thor
我想使用Thor在Ruby中创建一个命令行工具。此工具应打包为gem,以便轻松安装和卸载。创建并发布gem,我已经完成了。我还创建了几个同样有效的Thor脚本。但是,我不知道如何将它们组合起来。我的目标是能够通过以下方式调用我的工具:mytool任务参数--optionsmytool任务组:任务参数--options我知道如何使一个Thor脚本可执行。但是,如何使一堆thor脚本可访问并抛出一个命令? 最佳答案 根据relevantGemdocumentation,您可以指定(在您的.gemspec中):spec.executabl
我正在尝试使用Thor创建一个可执行的ruby脚本。我已经为我的任务定义了选项。到目前为止我有这样的东西classCommand:hash,:required=>true,:aliases=>"-L",:desc=>"languagestoconvert"...defcsv2strings(filename)...end...defconfigargs=options.dupargs[:file]||='.csvconverter.yaml'config=YAML::loadFile.open(args[:file],'r')endend当调用csv2strings时不带参数,我希
我有一个使用多种方法的Thor脚本classUpdate这可能吗?没有明确的任务,就无法正确构建任务列表。谢谢,蒂姆 最佳答案 我能够为此使用no_tasksblock。classUpdate 关于ruby-on-rails-是否有可能有一个不是显式任务的Thor方法,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7961267/
如何设置一个gem来使用二进制命令,例如使用Thor的生成器命令集创建文件等的“projectnewProject”?一个好的答案是描述如何布置一个gem的框架,当从命令行运行时,即“projectnewProject”,在它运行的目录中创建一个名为“newProject.txt”的文件。我看到Rails3正在使用Thor为其发电机供电;似乎是一个非常好的解决方案,我想在我正在处理的非Railsrubygem中使用类似的方法。尝试查看Rails3源代码,但它有点迷宫,因此出现了这个问题。 最佳答案 在您的gem项目中,您需要包含
我想访问Thor::Actions(http://textmate.rubyforge.org/thor/Thor/Actions.html)中的一些很棒的辅助方法,但如果不使用ThorCLI应用程序,我似乎无法使用它们。我简单地尝试过:require"rubygems"require"thor"Thor::Actions.create_file"foo.txt","contents"抛出:run.rb:4:in'':undefinedmethod'create_file'forThor::Actions:Module(NoMethodError)我意识到我可能在这里遗漏了一些非常简单
是否可以创建一个接受命名空间的基于Thor的Ruby可执行文件?例如,允许从命令行执行以下操作:./thorfilegreet:formal鉴于我有以下thorfile:#!/usr/bin/envrubyrequire'rubygems'require'thor'classTalkTasks这个thorfile提供以下任务(thor-T):thortalk:formal:greet#saysaformalhellothortalk:greet#sayshello我也可以直接将thorfile作为可执行文件来使用:./thorfilegreet显示:Hello!如何让./thorfil
我在下面使用Thor编写了一个脚本像管理ARGV的rake任务一样运行。#!/usr/bin/envrubyrequire"thor"classRun当启动rubyscript.rbstart时,它会生成两个子进程(总共三个)。我的问题是如何在执行rubyscript.rbstop时终止所有进程。我在网上看到,开始时,我应该将pid父进程存储到一个文件中,停止时,我读取它并杀死它。问题是杀死parent并不会杀死child。所以我可以将所有三个pid保存在文件中,稍后一个一个地杀死。我在问自己什么是正确的方法,以及我在start中处理进程的方式是否正确。 最
是否可以让Thor提示拼写错误/无法识别的命令行选项?例子:maid--slient#Oops!Misspelled.Itshouldgiveawarningorusageinfo.maid--silent#DothebehaviorIprogrammedforthe"silent"option.Thor真的很不错,但如果它只是忽略它不知道如何处理的输入,对我来说帮助不大。Maid还可以选择指定Maid规则文件,如下所示:maid--rules=rules.rb#Goodmaid-rrules.rb#Shortversionmaidrules.rb#Oops!That'snotvali