Thor Gem - 在任务之前发送参数

时间:2012-08-17 13:01:59

标签: ruby-on-rails ruby thor

令人困惑的描述我知道请看示例:

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

这很简单。所以,如果我打电话(Thor已经设置为使用类名作为第一个标识符)。现在没有身份证,所以没有打印任何内容。

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

最后问题是,我如何使用Thor能够以这种形式向参数发送参数?

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

我要做的是在任务名称之前传递参数栏,这可以用Thor吗?

对于令人困惑的问题感到抱歉,这是目前简化复杂代码的最佳方式。

1 个答案:

答案 0 :(得分: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

这是我的头脑,所以你的里程可能会有所不同......