optparseを使う機会があったので、整理を兼ねて使い方を書いてみます。
Rubyでは沢山のライブラリが用意されており、Gemfileを通して追加することなく使用できるものが沢山用意されています。
その中でも特に使用頻度が高いとされているものは組み込みライブラリと呼ばれ、requireを使って呼び出すことなくそのまま使用することができます。
optparseはコマンドライン上でオプションを受け取る為の呼び出しが必要な標準ライブラリです。
optparseを使う時は以下の3ステップを踏んで進めていきます。
1, OptionParser
を使ってオブジェクトoptを生成
require 'optparse'
opt = OptionParser.new
2, オプションを扱うブロックを作成
opt.on('-m int') {|m| month << m.to_i}
on
メソッドでopt
オブジェクトに登録するオプションを定義する。
-m
で数値として(intで数値として指定)受け取ったオプションをブロック内でmonth
という変数に入れる。
オプションとして受け取った時は文字列になっているので、数値として扱いたい時はto_i
メソッドで変更する。
3, コマンドラインで受け取ったオプションを分離する
opt.parse!(ARGV)
ARGVにコマンドラインで受け取ったオプションと引数が代入されており、parseすることで引数だけに分離することができる
実際のコードを書いてみると以下のようになります。
require 'optparse'
opt = OptionParser.new
month = []
opt.on('-m int') {|m| month << m.to_i}
p ARGV
opt.parse!(ARGV)
p month
上記のコードを実行した結果
$ ruby sample.rb -m 12
["-m", "12"]
["12"]
opt.parse!(ARGV)
の時点でオプションと引数が分離され引数がmonth
に代入される