Sha256: 0f49ef087ad265dd7c94db68d1808e9012d032b14d293e64ba05076671b9f306

Contents?: true

Size: 738 Bytes

Versions: 29

Compression:

Stored size: 738 Bytes

Contents

module Vagrant
  module Util
    module Retryable
      # Retries a given block a specified number of times in the
      # event the specified exception is raised. If the retries
      # run out, the final exception is raised.
      #
      # This code is adapted slightly from the following blog post:
      # http://blog.codefront.net/2008/01/14/retrying-code-blocks-in-ruby-on-exceptions-whatever/
      def retryable(opts=nil)
        opts = { :tries => 1, :on => Exception }.merge(opts || {})

        begin
          return yield
        rescue opts[:on]
          if (opts[:tries] -= 1) > 0
            sleep opts[:sleep].to_f if opts[:sleep]
            retry
          end
          raise
        end
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 3 rubygems

Version Path
vagrantup-0.7.2 lib/vagrant/util/retryable.rb
vagrantup-0.7.1 lib/vagrant/util/retryable.rb
vagrantup-0.7.0 lib/vagrant/util/retryable.rb
vagrantup-0.6.9 lib/vagrant/util/retryable.rb
vagrantup-0.6.8 lib/vagrant/util/retryable.rb
vagrantup-0.6.7 lib/vagrant/util/retryable.rb
vagrantup-0.6.6 lib/vagrant/util/retryable.rb
vagrantup-0.6.5 lib/vagrant/util/retryable.rb
vagrantup-0.6.4 lib/vagrant/util/retryable.rb
vagrantup-0.6.3 lib/vagrant/util/retryable.rb
vagrantup-0.6.2 lib/vagrant/util/retryable.rb
vagrantup-0.6.1 lib/vagrant/util/retryable.rb
vagrantup-0.6.0 lib/vagrant/util/retryable.rb
nixme-vagrant-0.7.2 lib/vagrant/util/retryable.rb
vagrant-0.7.2 lib/vagrant/util/retryable.rb
vagrant-0.7.1 lib/vagrant/util/retryable.rb
vagrant-0.7.0 lib/vagrant/util/retryable.rb
vagrant-0.7.0.beta2 lib/vagrant/util/retryable.rb
vagrant-0.7.0.beta lib/vagrant/util/retryable.rb
vagrant-0.6.9 lib/vagrant/util/retryable.rb