def open_and_process_zip(path)
Zip::File.open_buffer(open_file_or_remote(path)) do |zip|
fetch_zip_entries(zip) { |entry| process!(entry) }
end
rescue StandardError => e
raise e.class, "There was an error when trying to process the downloaded files: #{e.message}"
end
Получается, что тут мы добавляем более подробную информацию о том, на каком именно моменте произошла ошибка, а потом повторно её вызываем. Кстати, если написать просто
raise в rescue, то будет повторно вызвано то же самое исключение с тем же сообщением.