Проще всего показать на коде:
...
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 этот вопрос не разъясняется. Но мне хочется знать точно как писать это лучше.

