【问题标题】:Thor : How can I get my Thor task to display help when I have defined an argument?Thor:当我定义了一个参数时,如何让我的 Thor 任务显示帮助?
【发布时间】:2012-06-14 19:55:33
【问题描述】:

我正在将一个小项目转换为使用 Thor,并且心不在焉的我想使用内置帮助记录可用的任务。 但是,如果我使用参数定义任务,任务级帮助将恢复为类的帮助 - 这意味着不会显示任务描述或预期参数的详细信息。

我希望能够有一个可以用参数而不是参数调用的方法,所以它可以像这样使用

$ thor broke:foo hello
in a.thor broke:foo arg1=hello

我已将问题归结为以下 thorfile,除了损坏的帮助输出之外,它可以按我的意愿工作。我已经删除了任何其他参数,因为它们对问题没有任何影响。 第一个任务 ok:foo 将正常显示帮助,第二个任务 broken:foo 帮助不大:

class Ok < Thor
    desc "foo", "ok test2"
    def foo
        puts "in a.thor ok:foo\n"
    end
end
class Broke < Thor
    argument :arg1, :type=>:string, :desc => "arg1"
    desc "foo", "broke test1"
    def foo
        puts "in a.thor broke:foo arg1=#{self.arg1}\n"
    end
end

请求 ok:foo 任务方法的帮助:

$ thor help ok:foo
    Usage:
      thor ok:foo

    ok test

为 broken:foo 任务请求帮助的帮助不大:

$ thor help broke:foo
    Tasks:
      thor broke:foo ARG1          # broke test1
      thor broke:help ARG1 [TASK]  # Describe available tasks or one specific task

如何定义参数并显示正确的任务帮助?

【问题讨论】:

  • 我认为这不是您尝试做的问题,我认为这是 Thor 中的一个实际错误。今天我花了一些时间四处寻找,试图弄清楚发生了什么,我已经到了可以弄清楚发生了什么的地步。我在 Thor 中提交了一个测试失败的错误并描述了您的问题 - 我会看看我是否无法尝试修复它。

标签: ruby thor


【解决方案1】:

你的thorfile有小错误。

你有 argument 而不是 method_option

这里是正确的版本:

class Ok < Thor
    desc "foo", "ok test2"
    def foo
        puts "in a.thor ok:foo\n"
    end
end
class Broke < Thor
    method_option :arg1, :type=>:string, :desc => "arg1"
    desc "foo", "broke test1"
    def foo
        puts "in a.thor broke:foo arg1=#{self.arg1}\n"
    end
end

Wiki about method_option on github.com

【讨论】:

  • 抱歉,但这不是错误 - 我希望该方法需要参数而不是参数 - 我已更新问题以澄清
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多