थोर एक विशेष कार्य के विकल्प सेट करने के लिए method_option
का उपयोग कर सकता है। कक्षा में सभी कार्यों के विकल्पों को सेट करने के लिए class_option
का उपयोग कर सकते हैं। लेकिन इस मामले के बारे में क्या है जहां कोई वर्ग के कुछ कार्यों को चाहता है, लेकिन सभी नहीं, विकल्पों को साझा करने के लिए?दो थोर कार्य कैसे साझा करें विकल्प?
निम्नलिखित 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)
task1
और task2
दोनों के लिए method_option :type, :type => :string, :required => true, :default => 'foo'
बताते हुए के साथ समस्या यह है कि यह the DRY principle का उल्लंघन करता है। क्या इसे संभालने का एक बेवकूफ तरीका है?
अच्छा विचार है, लेकिन क्या हम आगे बढ़ सकते हैं और शायद guarant_option + को आम हैश को विलय करने के लिए साझा_ऑप्शन क्लास विधि को परिभाषित कर सकते हैं? – inger