Module: Tenax

Defined in:
lib/tenax.rb,
lib/tenax/errors.rb,
lib/tenax/result.rb,
lib/tenax/runner.rb,
lib/tenax/profile.rb,
lib/tenax/version.rb,
lib/tenax/deprecation.rb,
lib/tenax/retry/policy.rb,
lib/tenax/configuration.rb,
lib/tenax/instrumentation.rb,
lib/tenax/retry/classifier.rb,
lib/tenax/retry/backoff/linear.rb,
lib/tenax/circuit_breaker/state.rb,
lib/tenax/circuit_breaker/store.rb,
lib/tenax/retry/backoff/constant.rb,
lib/tenax/retry/backoff/strategy.rb,
lib/tenax/circuit_breaker/breaker.rb,
lib/tenax/retry/backoff/exponential.rb,
lib/tenax/retry/backoff/decorrelated_jitter.rb,
sig/tenax.rbs

Defined Under Namespace

Modules: CircuitBreaker, Deprecation, Instrumentation, Retry Classes: CircuitOpenError, Configuration, ConfigurationError, Error, ExecutionError, InstrumentationError, InvalidOptionError, Profile, Result, RetryLimitExceeded, Runner, UnknownProfileError

Constant Summary collapse

VERSION =

Returns:

  • (String)
"0.1.0"

Class Method Summary collapse

Class Method Details

.configuration ⇒ Tenax::Configuration

The global configuration object. Lazily instantiated.



40
41
42
# File 'lib/tenax.rb', line 40

def configuration
  @configuration ||= Configuration.new
end

.configure {|config| ... } ⇒ Tenax::Configuration

Configure Tenax. Yields the global Configuration object.

Examples:

Tenax.configure do |c|
  c.profile :stripe do |p|
    p.max_attempts 5
    p.backoff :exponential, base: 0.2, cap: 5.0
  end
end

Yield Parameters:

Returns:



33
34
35
36
# File 'lib/tenax.rb', line 33

def configure
  yield configuration if block_given?
  configuration
end

.reset! ⇒ Tenax::Configuration

Reset configuration to defaults. Primarily for testing. After reset, configure may be called again.



47
48
49
# File 'lib/tenax.rb', line 47

def reset!
  @configuration = Configuration.new
end

.run(profile_name) { ... } ⇒ Tenax::Result

Execute a block under a named profile's resilience policy. The configuration is finalized (frozen) on first call.

Parameters:

  • profile_name (Symbol) —

    the profile name

Yields:

  • the operation to execute

Returns:



57
58
59
60
# File 'lib/tenax.rb', line 57

def run(profile_name, &)
  configuration.finalize! unless configuration.frozen?
  Runner.new(configuration.profile(profile_name)).call(&)
end