CSVファイルに予期しないデータが入っていて、読み込むプログラムがエラーになることはよくある。
そんなとき、エラーになった行番号が表示されると調査が楽になるので、以下のように書くのをパターン化するといいかもしれない。
require "csv"
filename = "hoge.csv"
CSV.foreach(filename).with_index(1) do |row, lineno|
begin
# 本処理
puts row[0].gsub("a", "b")
rescue
# 元の例外にメッセージを付加して投げ直す
raise $!, "#{filename} の #{lineno} 行目を処理中にエラーが発生しました。\n#{$!.message}", $!.backtrace
end
end