Проще всего показать на коде:
...
Timeout::timeout(RESOURCE_CONTENT_PROBE_TIMEOUT) do
begin
body = http.get(@resource.path, { "User-Agent" => UA }).body
body = convert_to_utf8(body)
true
rescue
false
end
end
...
def convert_to_utf8(body)
begin
charset = CharDet.detect(body, silent: false).encoding
body = body.encode('utf-8', charset) unless charset == 'utf-8'
rescue
end
body
end
Мне кажется что я должен был бы писать в лог об ошибках в блоке rescue-end. Ещё кажется что два раза begin-end - это лишнее. В Programming Ruby этот вопрос не разъясняется. Но мне хочется знать точно как писать это лучше.