使用Thor可以使用method_option
來設置特定任務的選項。要爲班級中的所有任務設置選項,可以使用class_option
。但是,如果想要一個班級的一些任務而不是全部的任務來分享選項,那麼情況如何呢?如何使兩個thor任務共享選項?
在以下task1
和task2
份額選項,但它們不共享所有選項,並且它們與task3
不共享任何選項。
require 'thor'
class Cli < Thor
desc 'task1', 'Task 1'
method_option :type, :type => :string, :required => true, :default => 'foo'
def task1
end
desc 'task2', 'Task 2'
method_option :type, :type => :string, :required => true, :default => 'foo'
method_option :value, :type => :numeric
def task2
end
desc 'task3', 'Task 3'
method_option :verbose, :type => :boolean, :aliases => '-v'
def task3
end
end
Cli.start(ARGV)
與說明method_option :type, :type => :string, :required => true, :default => 'foo'
兩個task1
和task2
的問題是,它違反了the DRY principle。有沒有一種處理這種習慣的慣用方式?
好主意,但我們可以進一步,也許定義shared_options類方法委託給method_option +合併公共散列? – inger