意図
Rubyでいろいろ実施するときに、引数で使用するファイルを指定したりすることが多いかな。って。
ざっとこんな感じ
# 第一引数が、入力するファイル名とする
unless ARGV[0] == nil
#この辺りに、指定したファイルが正しいものかを判定する
#処理を記述する。
if FileTest.exist?(ARGV[0])
puts("ok hirakeru")
else
puts "ファイル #{ARGV[0]} ないです"
exit(1)
end
else
puts "引数で、入力ファイルが与えられていません"
exit(1)
end
puts "ファイルあり"
実行ケース
引数がない(判定対象がない)
$ ruby argv.rb
引数で、入力ファイルが与えられていません
指定したファイルがない
$ ruby argv.rb notfound.log
ファイル notfound.log ないです
指定したファイルが存在する
$ ruby argv.rb result.txt
ok hirakeru
ファイルあり
細かい解説
第一引数が存在するかどうかを判定する
第一引数が存在しないが成り立たない = 存在する と
存在しないが成り立つとき = 存在しないとき で切り分けている。
unless ARGV[0] == nil
第一引数(ファイル)が存在するときの処理
第一引数で指定したパスのファイルが存在するか否かを判定しています。
存在するときには、if直下の文字を出力しています。
存在しないときには、指定したパスのファイルが存在しないと警告して
異常終了しています。
if FileTest.exist?(ARGV[0])
puts("ok hirakeru")
else
puts "ファイル #{ARGV[0]} ないです"
exit(1)
end
第一引数(ファイル)が与えられていないときの処理(異常終了)
対象ファイル名が与えられていないときには、
最初のunless文の判定部分が真になるのでelse以下の処理に移動する。
そして、異常内容を表示して強制終了する。
else
puts "引数で、入力ファイルが与えられていません"
exit(1)
end
unless ARGV[0] == nil
最後に、正常なら判定部分の後の処理に到達する
ほぼ 蛇足です。
puts "ファイルあり"
余談
これからこのような処理を多用するので、デザインパターンのようなものを確立したかった。
この処理ってメソッドなどにして、そのメソッドの引数にプログラム実施時の第一引数部分などのパスに相当するものを与える。
与えられたパスに相当する対象物が存在すれば正常判定などを返す
そうでなければ警告を表示して異常終了。って