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