はじめに
コマンドラインから任意のオプションを設定するoptparseについて学習したので
その使い方についてまとめます。
使い方
optparseを使用する際は公式リファレンスより以下の3つの工程が必要になります。
- OptionParser オブジェクト opt を生成する。
- オプションを取り扱うブロックを opt に登録する。
- opt.parse(ARGV) でコマンドラインを実際に parse する。
コードでは以下のようになります。
require 'optparse'
opt = OptionParser.new
opt.on('-a') {|v| p v }
opt.on('-b') {|v| p v }
opt.parse!(ARGV)
p ARGV
↑のコードを記載したrubyファイルを起動する際にオプションとして-a
と-b
が
使用できるようになりそのオプションの処理が行われます。
1.OptionParser オブジェクト opt を生成する。
まずruby標準搭載のライブラリであるoptparseをrequireします。
その後にOptionParserクラスのインスタンスを生成します。
以後このインスタンスでオプションの設定を行います。
require 'optparse'
opt = OptionParser.new
2.オプションを取り扱うブロックを opt に登録する。
インスタンスメソッドのonで入力可能にするオプションと
そのオプションの処理を設定します。
処理内容はブロック内に記載しブロック変数にはオプションの引数つまり
コマンドラインでオプションの次に入力した値が入ります。
ここで注意しなければならないのがonメソッドがよばれた時点では
ブロック内の処理が行われていないことです。
ブロック内で引数を別の変数に入れて利用するケースで思わぬ不具合が出る
ということがあるので気をつけて下さい。
処理が行われるタイミングは後述のparseメソッドに付随して説明します。
opt.on('-a') {|v| p v }
opt.on('-b') {|v| p v }
3.opt.parse(ARGV) でコマンドラインを実際に parse する。
perseメソッドでオプションの引数を解析しARGVにその値が入ります。
また、先ほど説明したonメソッド内の処理はperseメソッドがよばれたタイミングで
行われます。
opt.parse!(ARGV)
p ARGV
最後に
以上optparseの解説になりました。
使い方はさまざまあると思いますので気になる方はぜひ公式リファレンスも活用して
学習してみて下さい。