Sha256: 751cdb57b4db9f9835d0142de37b70574adcc17395c08296cff788a875f37a5c

Contents?: true

Size: 575 Bytes

Versions: 11

Compression:

Stored size: 575 Bytes

Contents

module Houston

  def self.try(options, *rescue_from)
    options = { max_tries: options } if options.is_a?(Fixnum)
    options = {} unless options.is_a?(Hash)
    max_tries = options.fetch :max_tries, 3
    base = options.fetch :base, 2
    ignore = options.fetch :ignore, false

    tries = 1
    begin
      yield tries
    rescue *rescue_from
      unless (tries += 1) <= max_tries
        return if ignore
        raise
      end
      Rails.logger.warn "\e[31m[try] \e[1m#{$!.class}\e[0;31m: #{$!.message}\e[0m"
      sleep base ** tries
      retry
    end
  end

end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
houston-core-0.6.3 config/initializers/houston_try.rb
houston-core-0.6.2 config/initializers/houston_try.rb
houston-core-0.6.1 config/initializers/houston_try.rb
houston-core-0.6.0 config/initializers/houston_try.rb
houston-core-0.5.6 config/initializers/houston_try.rb
houston-core-0.5.5 config/initializers/houston_try.rb
houston-core-0.5.4 config/initializers/houston_try.rb
houston-core-0.5.3 config/initializers/houston_try.rb
houston-core-0.5.2 config/initializers/houston_try.rb
houston-core-0.5.1 config/initializers/houston_try.rb
houston-core-0.5.0 config/initializers/houston_try.rb