2013-11-26 4 views
0

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('$') 

ответ

1

Вы должны смотреть на http://www.tutorialspoint.com/ruby/ruby_exceptions.htm на обработку исключений. Существует также столбец переполнения сообщения об этом: Begin, Rescue and Ensure in Ruby?. Вы можете исправить свою проблему, установив флаг в блок обработки исключений, а затем проверив этот флаг позже в вашем коде, чтобы узнать, произошло ли исключение, и это должно устранить вашу проблему.

1

Вы можете просто спасти исключение Mechanize :: ResponseCodeError и сделать свой альтернативный процесс для перенаправления внутри этого блока

Смежные вопросы