Sha256: e19c5b6cfccc6cdf0b57a9c4dd5dc3670461eebac73fdea7ce012b6946bd4551

Contents?: true

Size: 822 Bytes

Versions: 69

Compression:

Stored size: 822 Bytes

Contents

module Sufia
  module Utils
    extend ActiveSupport::Concern

    def retry_unless(number_of_tries, condition, &block)
      self.class.retry_unless(number_of_tries, condition, &block)
    end

    module ClassMethods
      def retry_unless(number_of_tries, condition, &block)
        raise ArgumentError, "First argument must be an enumerator" unless number_of_tries.is_a? Enumerator
        raise ArgumentError, "Second argument must be a lambda" unless condition.respond_to? :call
        raise ArgumentError, "Must pass a block of code to retry" unless block_given?
        number_of_tries.each do
          result = block.call
          return result unless condition.call
        end
        raise RuntimeError, "retry_unless could not complete successfully. Try upping the # of tries?"
      end
    end
  end
end

Version data entries

69 entries across 69 versions & 2 rubygems

Version Path
sufia-5.0.0 sufia-models/lib/sufia/models/utils.rb
sufia-models-5.0.0 lib/sufia/models/utils.rb
sufia-models-6.0.0 lib/sufia/models/utils.rb
sufia-6.0.0 sufia-models/lib/sufia/models/utils.rb
sufia-6.0.0.rc4 sufia-models/lib/sufia/models/utils.rb
sufia-models-6.0.0.rc4 lib/sufia/models/utils.rb
sufia-6.0.0.rc3 sufia-models/lib/sufia/models/utils.rb
sufia-models-6.0.0.rc3 lib/sufia/models/utils.rb
sufia-5.0.0.rc1 sufia-models/lib/sufia/models/utils.rb
sufia-models-5.0.0.rc1 lib/sufia/models/utils.rb
sufia-6.0.0.rc2 sufia-models/lib/sufia/models/utils.rb
sufia-models-6.0.0.rc2 lib/sufia/models/utils.rb
sufia-6.0.0.rc1 sufia-models/lib/sufia/models/utils.rb
sufia-models-6.0.0.rc1 lib/sufia/models/utils.rb
sufia-4.3.1 sufia-models/lib/sufia/models/utils.rb
sufia-models-4.3.1 lib/sufia/models/utils.rb
sufia-6.0.0.beta1 sufia-models/lib/sufia/models/utils.rb
sufia-models-6.0.0.beta1 lib/sufia/models/utils.rb
sufia-models-5.0.0.beta1 lib/sufia/models/utils.rb
sufia-4.2.0 sufia-models/lib/sufia/models/utils.rb