Ruby 2.6.0 リファレンスマニュアル > ライブラリ一覧 > optparseライブラリ > OptionParserクラス > order!
order!(argv = self.default_argv, into: nil) -> [String]
[permalink][rdoc]order!(argv = self.default_argv, into: nil) {|s| ...} -> [String]
与えられた argv を順番に破壊的にパースします。 argv からオプションがすべて取り除かれます。 argv を返します。
オプションではないコマンドの引数(下の例で言うと somefile)に出会うと、パースを中断します。ブロックが与えられている場合は、パースを中断せずに引数をブロックに渡してブロックを評価し、パースを継続します。argv を返します。
下の例で言うと、コマンドの引数 somefile よりも後ろにオプションを置くことができません。 -b もコマンドのオプションではない引数として扱われてしまいます。
require 'optparse'
opt = OptionParser.new
opt.on('-a [VAL]') {|v| p :a }
opt.on('-b') {|v| p :b }
opt.order!(ARGV)
p ARGV
↓
$ ruby opt.rb -a foo somefile -b :a ["somefile", "-b"]