この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
よくCSVを読み込む時にファイルのエンコードが違っていて読み込めず例外が発生することが多々あります。そこで例外発生を抑える方法を記述します。
begin~rescueを使用してCSVを開く
例外が起こるたびに次の方法で開いていくスタイル。
def execute
csv.each do |row|
.
.
.
end
end
private
def csv
begin
@csv = CSV.foreach(file_path)
@csv.first # UTF-8で開けなかったらここで例外が起こる
@csv
rescue
CSV.new(open(file_path, 'rb:Shift_JIS:UTF-8', undef: :replace)) # Shift_JISのCSVを開く
end
rescue
errors.add :base, '開けぬ...'
raise
end
def file_path
...
end