Я знаю, что механизатор имеет post_connect_hooks
, который будет запущен после того, как страница будет восстановлена. Однако, если происходит исключение, например. если вы запрашиваете неизвестный URL-адрес, например "http://dsjkhbgdfb.comsfg"
, тогда он запускает pre_connect_hooks
, но не post_connect_hooks
. Есть ли способ гарантировать, что всегда нужно запускать post_connect_hooks
(или что-то подобное)?Крючки всегда должны запускаться по запросу efter - также по ошибке
agent = Mechanize.new
agent.pre_connect_hooks << lambda do |request_agent, request|
puts "increment a counter"
end
agent.post_connect_hooks << lambda do |request_agent, uri, response, response_body|
puts "decrement a counter"
end
agent.get("http://dsjkhbgdfb.comsfg")
#=> increment a counter
#=> SocketError: getaddrinfo: nodename nor servname provided, or not known
Как вы можете видеть, «декремент счетчика» не запускается, поскольку перед этим происходит ошибка.