我有一个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
我已经创建了一个.thor脚本来按照我喜欢的方式设置一个新的ruby项目。我正在使用Thor::Actionsdirectory命令完全从模板目录结构构建应用程序,而不是使用heredocs内联定义它们。脚本目录看起来像这样:rubynu.thortemplate/bin/lib/%app_name%.rb.tt%app_name%README.markdown.gitignore...这真的很棒,让我可以根据自己的喜好轻松地可视化和更改模板的各个部分。但是我想不出一个很好的方法让thor在使用thorinstallrubynu.thor安装.thor文件后找到模板目录。安装将