どうもこんにちは。
今回は、「Rubyスクリプトを実行するときに、OptionParser
を使用してカスタムオプションを渡す」方法をメモとして残しておこうと思います。
経緯
OptionParser
を使用する経緯としては、「試験仕様書を作成するのめんどくさ!!」というところから始まりました。(なんとも不純な動機...)
作成したかったRubyスクリプトは、「ある機能」の「ある画面」の「ユーザの種類によるアクセス可否」の試験仕様書を作成するスクリプトでした。
「顧客管理機能」の「一覧画面」の「すべてのユーザのアクセス可否」の試験
試験を実施する対象のアプリケーションは、Ruby on Railsで開発していて、config/settings.yml
に記載しています。このファイルを今回作成するRubyスクリプトから参照して、試験手順と期待する結果を変えています。
yml_path = '/Users/testuser/code/test_create_tools/'
data = YAML.load_file(yml_path)
あとはごちゃごちゃ書いて、require 'csv'
でCSVモジュールを使って試験仕様書を作成していくのですが、このコードを実行するときに、以下の手順を踏まなきゃ行けなかったんです。
- コード内の
function_name
とdisplay_name
に代入する値を直接変更する -
ruby /Users/testuser/code/test_create_tools/test_create_tool.rb
を実行する
上記のように、コードを直接編集するのはなんとも使い勝手が悪い...
なので、コマンドを実行するときに渡せないかと考えたときに、OptionParser
という存在を発見!
OptionParserで何をした?
ruby
コマンドでRubyスクリプトを実行すると同時に、コードに「機能名」「画面名」をパラメータとして渡すということをしました。
使い方
require 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "使い方: test_create_tool.rb [options]"
opts.on("-fVAL", "--f=VAL", "テストを作成する機能名") do |f|
options[:f] = f
end
opts.on("-sVAL", "--d=VAL", "テストを作成する画面名") do |d|
options[:d] = d
end
# ヘルプの表示
opts.on_tail("-h", "--help", "ヘルプを表示") do
puts opts
exit
end
end.parse!
# テスト対象となる機能名
function_name = options[:f]
if function_name.nil?
puts '機能名を指定してください。'
exit
end
# テスト対象となる画面名
display_name = options[:d]
if display_name.nil?
puts '画面名を指定してください。'
exit
end
まとめ
これでコードを直接編集することなく、パラメータとして「機能名」「画面名」を渡すことで、試験仕様書の作成を行うことができました。
2025年からは、試験仕様書の作成での工数消費を抑えて、開発業務に時間を使えるようにしたいなぁと思います!
以上