Ruby optparseライブラリの使い方~自戒も込めて~
optparseとは
rubyの標準ライブラリの一つである「optparse」は、ruby実行時のオプションを取得するためのものです。
まず、オプションって何?という方は、下の図を見ると分かると思います。
-aというオプションには、ALFA
-bというオプションには、BRAVO
を指定できることです。
つまり、このオプションが取得できるRubyの標準ライブラリが「optparase」です。
詳しい使い方はこのサイトに任せるとして、一つ小話を。
その前に、僕が一番使いやすい・直観的だと感じたコードを貼っておきます。
require 'optparse' params = ARGV.getopts("a:","b:") p params
ここにたどり着くまでの物語を。(そんな大層なことはない。)
使い方が分からなければ、検索しよう
僕は、検索しました。
たぶん、トップに出てきます。
※rubyというキーワードを付ければ、
上記のサイト内のコードを拝借しますが、
このライブラリの使い方はこうです。
require 'optparse' opt = OptionParser.new opt.on('-a') {|v| p v } opt.on('-b') {|v| p v } opt.parse!(ARGV) p ARGV
実行例はこれです。
ruby sample.rb -a foo bar -b baz # => true true ["foo", "bar", "baz"]
早とちりの僕は、この時点でこう思います。
欲しいのは、trueじゃない
ただの配列じゃない
僕が所望する出力はこういうの!。
{ "a":["foo", "bar"], "b":["baz"] }
こう思って、すこしイラつくこと10分。
自分の意図するコードを探すこと10分。
ついに発見。便利な機能。
OptionParser::Arguable
使い方は、こうです。
require 'optparse' params = ARGV.getopts("a:","b:") p params
リファレンスマニュアルの下のほうに書いてあります。
「加わりました」と書いてあるので、古いRubyでは動かないのかもしれません。
library optparse (Ruby 3.2 リファレンスマニュアル)
今回の学び
リファレンスを下までスクロールを。
おかしいな。いつも他人にはそう教えるのに。