Ответ 1
error_messages.any? { |mes| agent.page.body.include? mes }
Я использую Mechanize
для взаимодействия с несколькими веб-страницами, и я пытаюсь определить, привело ли сообщение к данной форме сообщение об ошибке.
Сейчас я делаю это:
agent.page.body.include?("I'm an error message!")
Но я только что обнаружил другое сообщение об ошибке. Поскольку я не хочу делать:
agent.page.body.include?("I'm an error message!") || agent.page.body.include?("Another error message")
Как определить, содержит ли тело страницы сообщение об ошибке?
error_messages.any? { |mes| agent.page.body.include? mes }
В качестве альтернативы сделайте это в одном проходе Regex:
error_messages = /I'm an error message!|Another error message/
if agent.page.body =~ error_messages
...
end
Вам нужно убедиться, что вы избегаете сообщений об ошибках, содержащих специальные символы регулярных выражений. Чтобы сделать его пригодным для обслуживания:
if agent.page.body =~ Regexp.union("foo", "bar", "jim.bob", "jam|jam")
...
end
Вы должны использовать это только в том случае, если вы протестировали и обнаружили, что скорость ответа Nakilon недостаточна.:)