My rails app - это веб-скребок, использующий Mechanize/Nokogiri. Из-за проблем с KBB.com и их файлов cookie я должен очистить банку cookie в своем приложении каждый раз, когда я выдаю новый запрос на свой сервер.Как мне заставить приложение rails обходить ошибки?
agent.cookie_jar.clear!
Однако, в то время как мое приложение соскоб данные, иногда она попадает на страницу KBB.cpm с автоматическим перенаправлением! Это приводит к ошибке:
Mechanize::ResponseCodeError: 500 => Net::HTTPInternalServerError for http://www.kbb.com/toyota/prius/2002-toyota-prius/sedan-4d/options/?vehicleid=4843&intent=buy-used -- unhandled response
Это вызывает мои рельсы приложение к сбою, потому что я не могу очистить куки банку, прежде чем он перенаправляет. Вместо этого то, что я хотел бы сделать для моего приложения, это признать, что он может попасть в ошибку, и если он использует другой процесс. Что-то вроде:
if there_is_an_error
# alternative process for redirect
else
# business as usual
end
вот мой код:
agent = Mechanize.new
agent.cookie_jar.clear!
page = agent.get(url)
agent.cookie_jar.clear!
page.link_with(:text => "Choose this style").click
agent.cookie_jar.clear!
agent.page.link_with(:text => "Choose price type").click
agent.cookie_jar.clear!
agent.page.links_with(:text => "Get used car price")[2].click
url = agent.page.uri.to_s.sub('retail', 'private-party')
agent.cookie_jar.clear!
agent.get(url)
@kbb_value = agent.page.at('.selected .value').text.delete('$')