Como fazer duas tarefas de compartilhamento de opções?

Com o Thor, pode-se usarmethod_option para definir as opções para uma tarefa específica. Para definir as opções para todas as tarefas em uma classe, pode-se usarclass_option. Mas e o caso em que alguém quer algumas tarefas de uma classe, mas não todas, para compartilhar opções?

Na sequênciatask1 etask2 opções de ações, mas eles não compartilham todas as opções e eles não compartilham opções comtask3.

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)

O problema com afirmandomethod_option :type, :type => :string, :required => true, :default => 'foo' para ambostask1 etask2 é que isso violao princípio DRY. Existe uma maneira idiomática de lidar com isso?

questionAnswers(5)

yourAnswerToTheQuestion