スクリプト書くとき、必須の引数1個や2個ならARGV[0]
とかでいいけども
任意のパラメータ使いたいときとかしんどい
そんなときoptimist(旧名:trollop)というgemをよく使ってたけど、久しぶりに使おうとしたら使い方忘れてたので書いとく
OptionParserでも良さげ(存在を知らなかった)
使い方 みればいいんだけども
1
2
3
4
5
6
7
8
9
require 'optimist'
opts = Optimist::options do
version '0.0.1'
opt :env, '環境', default: 'local', type: :string
opt :num, '番号', short: :n, type: :string
opt :dry_run, 'dry-run', short: :d
end
puts opts
1
2
$ ruby opt.rb -v
0.0.1
1
2
3
4
5
6
7
8
$ ruby opt.rb -h
0.0.1
Options:
-e, --env=<s> 環境 (default: local)
-n, --num=<s> 番号
-d, --dry-run dry-run
-v, --version Print version and exit
-h, --help Show this message
dry_run が dry-run になる。注意
シンボルなのでハイフンは使えないけどパラメータにアンダースコアは使えないようです
キー名はストリングで揃えて opt 'dry-run', 'dry-run', short: :d
としたほうがいいかも
1
2
$ ruby opt.rb
{:env=>"local", :num=>nil, :dry_run=>false, :version=>false, :help=>false}
1
2
$ ruby opt.rb --env production -n 999 -d
{:env=>"production", :num=>"999", :dry_run=>true, :version=>false, :help=>false, :env_given=>true, :num_given=>true, :dry_run_given=>true}
指定したパラメータ名_given
というキーが追加されているので何が渡されたかわかって良い
envに略名つけてないのは rails runner で動かしたときにrailsのオプションと勘違いされたから
railsのパッチとして動かすときは注意が必要かも
手軽で便利で好き。
こういうのをクールというのだろうか
クールなツール作れるようになりたいなぁ
コメント