Я создал форму на веб-странице, которая позволяет пользователю вводить URL-адрес, и возвращается некоторая информация о CSS URL-адреса. Инструмент работает нормально, за исключением одной проблемы, которую я заметил.
Когда я ввожу URL-адрес сайта, на котором размещен скрипт (проверено локально, на промежуточном сервере и на рабочем сервере), команда open-uri 'open' возвращает Timeout::Error. Теперь это не так уж удивительно, я предполагаю, что что-то блокируется где-то на линии, и в процессе запуска скрипта и открытия текущего URL-адреса процессы немного связываются.
Для справки, вот метод, в котором происходит тайм-аут:
# loads the Nokogiri XML object if it hasn't already been loaded
def site
begin
timeout(10) do
@site ||= Nokogiri::HTML(open(url))
end
rescue Timeout::Error
return nil
end
end
Мой вопрос: как мне включить скрипт, чтобы он мог «открывать» домен, на котором скрипт в данный момент работает? Нужно ли мне создавать еще один поток или что-то еще для обработки этого конкретного аспекта моего инструмента, если да, то как я могу гарантировать, что остальная часть моего сценария не будет запущена, пока я не получу что-то действительное из команды «открыть»?
Спасибо за любые предложения или советы по этому поводу.