Звучит так, как будто ваш CSV::IllegalFormatError
неправильно подклассифицирует RuntimeError
.Или же RuntimeError
был изменен на не подкласс StandardError
.
Только ошибки, подкласс StandardError
которых перехватываются блоками спасения по умолчанию.Чтобы проверить эту теорию, попробуйте
@parsed_file = begin
CSV::Reader.parse(params[:file])
rescue StandardError
puts "I caught a StandardError"
[]
rescue Exception => e
puts "I caught #{e.class}->#{e.class.superclass}->#{e.class.superclass.superclass}"
[]
end
Это объясняет, почему я (и, возможно, другие) не могу повторить эту проблему.
В любом случае использование Exception
явно должно работать и будет чище, чем патч обезьяны.