module CurationConcerns::Utils::ClassMethods

Public Instance Methods

retry_unless(number_of_tries, condition) { || ... } click to toggle source
# File lib/curation_concerns/models/utils.rb, line 10
def retry_unless(number_of_tries, condition, &_block)
  fail ArgumentError, 'First argument must be an enumerator' unless number_of_tries.is_a? Enumerator
  fail ArgumentError, 'Second argument must be a lambda' unless condition.respond_to? :call
  fail ArgumentError, 'Must pass a block of code to retry' unless block_given?
  number_of_tries.each do
    result = yield
    return result unless condition.call
  end
  fail 'retry_unless could not complete successfully. Try upping the # of tries?'
end