0

我知道的令人困惑的描述,请参见示例:

Foo < Thor

  desc "bar","bar method"
  def bar
    puts "Hello from bar #{options[:id]}"
  end

  desc "nar","nar method"
  def nar
    puts "Hello from nar"
  end
end

这很简单。因此,如果我打电话(雷神已经以这种方式设置为使用类名作为第一个标识符)。现在没有 id,所以什么都没有打印。

foo bar
> Hello from bar
foo nar
> Hello from nar

最后的问题是,我怎样才能使用 Thor 以这种形式向方法发送参数?

foo 12 bar
> Hello from bar 12
foo nar 
> Hello from nar

我想做的是在任务名称之前传递参数栏,这对Thor来说可能吗?

抱歉,这个问题令人困惑,但目前简化我复杂代码的最佳方法。

4

1 回答 1

0

您拥有 Ruby 的强大功能,因此您可以:

class Foo < Thor
  desc "bar","bar method"
  def bar(id)
    puts "Hello from bar #{id}"
  end

  def method_missing(m, *args, &block)
    if m.is_a? Integer  ## Might not work. May need to_i and an exception check.
      bar(m)
    end
  end
end

这不在我的脑海中,所以你的里程可能会有所不同......

于 2013-01-04T17:59:03.770 回答