[英]run specific version of ruby script if command line argument is entered
我已經閱讀了很多有關問題的變體,但是似乎找不到與我要嘗試做的事情完全匹配的問題。
我有一個基本上具有兩個版本的腳本:“默認”將通過一系列強制性方法運行,第二個版本將通過這些相同的方法運行,然后使用一系列輔助方法。 我希望從命令行中觸發第二個版本(類似於$ script.rb second_version
),而“ default”選項則$ script.rb second_version
任何參數輸入觸發(因為它將被更頻繁地使用,因此$ script.rb
)。
我嘗試了ARGV:
second_version = ARGV[0]
if second_version
second_version_methods
else
main_version
end
從技術上講這是可行的,但是問題是在main_version腳本中運行的第一個方法是需要用戶輸入的方法。 最終發生的事情是,字符串“ second_version”會自動作為值傳遞給該方法,這是我不想要的。
本質上,是否有一種方法可以使用命令行參數,該參數僅指定要以特定方式運行的條件,然后一旦完成,便會丟棄輸入? 我已經研究過optparse,但是為此目的,它的功能似乎有些多余。
謝謝!
ARGV
不是只讀的,因此您可以像這樣使用第一個輸入:
if ARGV[0] == 'second_version'
ARGV.shift # removes the first element
second_version_methods
else
main_version
end
如果您想保持ARGV完整(這是一個更好的主意),可以這樣做:
arguments = ARGV.dup
if arguments[0] == 'second_thing'
arguments.shift
# ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.