Как определить, когда функция openURI в Ruby выдает ошибку 404 страницы не найдена?

Я хочу получить содержимое веб-страницы следующим образом:

open("http://www.ruby-lang.org/")

Однако иногда эта страница не существует:

open("http://www.ruby-lang.org/blabla.html")

open Команда выдает исключение. Я знаю, что могу поймать это исключение, но в моем случае оно кажется неуместным. Я знаю, что регулярно будут плохие URL, потому что посетители и пользователи вводят URL для получения.

Мне не нравится идея использовать исключения для этой обычной ситуации. Есть ли способ узнать, что страница не была найдена без исключения?

1 ответ

Вы используете упрощенный метод для чтения файла (open-uri), поэтому вы получаете упрощенный результат для ошибок. Это просто не надежный способ сделать что-то, кроме простого успеха / неудачи.

Проверьте используя Net::HTTP (в частности, request метод) или Mechanize или много других доступных API для таких задач.

Другие вопросы по тегам