Отливание ошибок тайм-аута с Ruby Mechanize

У меня есть механизация функции, чтобы зарегистрировать меня из сайта, но в очень редких случаях, когда меня нет. Функция включает в себя переход на определенную страницу, а затем нажав кнопку выхода из системы. На случай, когда механизация страдает от времени ожидания, когда выйдите на страницу выхода из системы, либо нажав кнопку «Выход». Поэтому я положил в небольшой спасение, и, кажется, работает как видно ниже первого куска кода.

def logmeout(agent)
  page = agent.get('http://www.example.com/')
  agent.click(page.link_with(:text => /Log Out/i))
end      

LOGMEOUT С RESCUE:

def logmeout(agent)
  begin
  page = agent.get('http://www.example.com/')
  agent.click(page.link_with(:text => /Log Out/i))
  rescue Timeout::Error 
    puts "Timeout!"
    retry
  end
end

Предполагая, что я правильно понимаю спасение, он будет делать оба действия, даже если только нажав на нажатие, поэтому в попытке быть эффективным, мне было интересно, сможете ли я использовать в этой ситуации и пропустите его код кода. Будет что-то вроде этой работы:

def trythreetimes
  tries = 0
  begin
  yield
  rescue
    tries += 1
    puts "Trying again!"
    retry if tries <= 3
  end
end

def logmeout(agent)
  trythreetimes {page = agent.get('http://www.example.com/')}
  trythreetimes {agent.click(page.link_with(:text => /Log Out/i))}
end

Примечание. В моих функциях TrythReetimes я оставил ее как общая спасение, поэтому функция будет более повторно использовать.

Большое спасибо за любую помощь, которую кто-нибудь может предоставить, я понимаю, что здесь есть пара разных вопросов, но они все, что я пытаюсь учиться!

9
задан Sean 15 September 2011 в 04:47
поделиться