Sha256: b5fc0006e6013568da8dc4ad4f044cee94ea2f1188e2d2a2719940a2542e0310
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
# frozen_string_literal: true # (c) Copyright 2020 Ribose Inc. # require "singleton" module Iev # Relaton cach singleton. class RelatonDb include Singleton include Cli::Ui def initialize info "Initializing Relaton..." @db = Relaton::Db.new "db", nil end # @param code [String] reference # @return [RelatonIso::IsoBibliongraphicItem] def fetch(code) retrying_on_failures do capture_output_streams do @db.fetch code end end end private def retrying_on_failures(attempts: 4) curr_attempt = 1 begin yield rescue StandardError raise unless curr_attempt <= attempts sleep(2**curr_attempt * 0.1) curr_attempt += 1 retry end end def capture_output_streams original_stdout = $stdout original_stderr = $stderr $stderr = $stdout = fake_out = StringIO.new begin yield ensure $stdout = original_stdout $stderr = original_stderr debug(:relaton, fake_out.string) if fake_out.pos.positive? end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
iev-0.3.5 | lib/iev/relaton_db.rb |