Rubyでoptparseを使う方法(初心者向け)

Rubyを勉強していて初めてoptparseを使ったので使い方を整理するためにもブログに書いてみます。間違いなどありましたらご指摘ください。

optparseとは

標準ライブラリの一種でRubyのファイルを実行するときコマンドライン上で-aなどオプションを指定できるようになります。

使い方

Rubyの公式リファレンスマニュアルを参考にしてみます。 まずRubyファイル内にrequire 'optparse'と記述してライブラリからoptparseを呼びます。 その後ファイル内にオプションで出力させたい結果を記述します。Rubyは上に書いた内容から順に読み込まれるのでrequire 'optparse'より上にオプションで出力させたい内容を記述してもエラーが出てしまいます。

opt = OptionParser.new

opt.on('-a') {|v| p v } #{}の中に処理内容を書く。ここでは引数を取得
opt.on('-b') {|v| p v } 

opt.parse!(ARGV) #引数だけ取り出す
p ARGV #引数を出力 

このファイルをオプションを付けて実行すると以下のように引数とオプションが実行できたことを示すtrueが表示されます。ちなみに、オプションを付けずruby sample.rbだけ書いた場合はopt.on('-a') {|v| p v } opt.on('-b') {|v| p v }の内容は実行されません。

 sample.rb -a foo bar -b baz
# => true
     true
     ["foo", "bar", "baz"] 

例題以外にどんなことに使えるか

リファレンスマニュアルの例題では引数を取得するオプションが取り上げられていますが条件分岐させてエラーの際に出るエラー文を決めることもできます。

 #もし-aの後に1~10以外の数字を入力したらエラーを出す

if  xxxxx
  puts "error: #{opt['a']} Invalid number, please enter (1..10)" 
  return
end

ruby sample.rb -a 11
# => #{opt['a']} Invalid number, please enter (1..10) 

参考ページ

Rubyの公式リファレンスマニュアルです。optparse以外にもオプションをどう条件分岐させたいか?など調べるときにとても参考になります。見慣れない単語があり、リファレンスマニュアルの読み方も調べながら進めていました。 docs.ruby-lang.org

こちらもリファレンスマニュアルの内容が分からないとき参考にさせていただきました。 akng-engineer.hatenablog.com

最後までご覧いただきありがとうございました!