1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rubyのoptparseライブラリの使い方

Posted at

はじめに

 Rubyの学習としてカレンダーを作成した際に、オプションで月を指定できるようにするためにoptparseライブラリを使用したので、使い方をまとめました。

optparseとは

 optparseは、Rubyファイル実行時にオプションを指定できるようにするライブラリです。

使い方

基本パターン

  1. optparseをrequireする
  2. OptionParserオブジェクトを生成する
  3. onメソッドを用いて、オプションを指定するためのブロックを作成する
  4. parseメソッドを用いて、与えられたARGVをparseする
sample.rb
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 
#=> []

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

オプションに引数をつける

 onメソッドのオプション定義の末尾に文字列を追加することで、オプションに引数を指定できるようになります。[]で囲った文字列を追加した場合は、引数は任意指定となり、文字列のみを追加した場合、引数は必須指定となります。

sumple.rb
require 'optparse'
opt = OptionParser.new

#引数を任意指定にする場合(引数として"[VAL]"を追加)
opt.on('-a [VAL]') {|v| p v } 
#引数を必須指定にする場合(引数として"VAL"を追加)
opt.on('-b VAL') {|v| p v }

opt.parse(ARGV)
p ARGV
実行結果
$ ruby sample.rb -a foo       
#=> "foo"
#=> ["-a", "foo"]

$ ruby sample.rb -a     
#=> nil
#=> ["-a"]

$ ruby sample.rb -b bar       
#=> "bar"
#=> ["-b", "bar"]

$ ruby sample.rb -b   
sample.rb:9:in `<main>': missing argument: -b (OptionParser::MissingArgument)

ARGVの機能

 optparseをrequireするとARGVにOptionParser::Arguableの機能が加わり、getoptsメソッドを使用して以下のような書き方もできます。

sample.rb
require 'optparse'
params = ARGV.getopts("a:b:")
p params
実行結果
$ ruby sample.rb -a foo -b bar
#=> {"a"=>"foo", "b"=>"bar"}

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?