編集:
OptionParser を使用してコマンド ライン入力を適切に処理するコードを作成しました。私は2つの大きなヒットに直面しています。
- 空のスイッチ '-' を渡してもエラーにはなりません。もちろん、一部のプログラムはそれを有効と見なしますが、私のものはそうすべきではありません。
- このプログラムには 2 つの必須スイッチが必要ですが、1 つのスイッチを問題なく受け入れます。たとえば
program.ruby -f foo -b bar
、有効な入力であり、両方のスイッチが :REQUIRED です。ただし、スイッチを 1 つだけ指定しても問題はなく、これは望ましい動作ではありません。
最初のケースでは、これを行いました:
opts.on('-', /\A-\Z/) do
$stderr.print "Invalid empty switch"
exit 1
end
それは正常に動作します。しかし、これは適切な方法ですか?
2 番目のケースについては、OptionParser.new ブロック内で解決策を探しましたが、見つかりませんでした。例えば
unless options.foo && options.bar
puts "Error."
exit 2
end
OptionParser.new ブロックの外でそれを行うのが通常の方法ですか?