LoginSignup
2
3

More than 5 years have passed since last update.

(個人メモ)引数でファイル名を指定し、有無をチェックするようなケース

Posted at

意図

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 "ファイルあり"

余談

これからこのような処理を多用するので、デザインパターンのようなものを確立したかった。

この処理ってメソッドなどにして、そのメソッドの引数にプログラム実施時の第一引数部分などのパスに相当するものを与える。

与えられたパスに相当する対象物が存在すれば正常判定などを返す
そうでなければ警告を表示して異常終了。って

2
3
3

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
2
3