class SlowDown::Configuration
Constants
- CONCURRENCY_MULTIPLIER
- DEFAULTS
Public Class Methods
new(options)
click to toggle source
# File lib/slow_down/configuration.rb, line 39 def initialize(options) @options = DEFAULTS.merge(options) end
Public Instance Methods
concurrency()
click to toggle source
# File lib/slow_down/configuration.rb, line 56 def concurrency @concurrency ||= @options[:concurrency] || [1, requests_per_second.ceil * CONCURRENCY_MULTIPLIER].max end
invalidate()
click to toggle source
# File lib/slow_down/configuration.rb, line 100 def invalidate @redis = nil @log_path = nil @log_level = nil @concurrency = nil @locks = nil @milliseconds_per_request = nil @milliseconds_per_request_per_lock = nil @seconds_per_retry = nil @seconds_per_retry_arr = nil end
locks()
click to toggle source
# File lib/slow_down/configuration.rb, line 60 def locks @locks ||= concurrency.times.map do |i| [redis_namespace, "#{lock_namespace}_#{i}"].compact.join(":") end end
logger()
click to toggle source
# File lib/slow_down/configuration.rb, line 43 def logger @logger ||= Logger.new(log_path).tap do |l| l.level = log_level l.formatter = proc do |severity, time, group_name, message| "#{time},#{severity},##{Process.pid},#{group_name}: #{message}\n" end end end
milliseconds_per_request()
click to toggle source
# File lib/slow_down/configuration.rb, line 66 def milliseconds_per_request @milliseconds_per_request ||= 1000.0 / requests_per_second end
milliseconds_per_request_per_lock()
click to toggle source
# File lib/slow_down/configuration.rb, line 70 def milliseconds_per_request_per_lock @milliseconds_per_request_per_lock ||= (milliseconds_per_request * concurrency).round end
redis()
click to toggle source
# File lib/slow_down/configuration.rb, line 52 def redis @redis ||= @options[:redis] || Redis.new(url: redis_url || ENV.fetch("REDIS_URL")) end
seconds_per_retry(retry_count)
click to toggle source
# File lib/slow_down/configuration.rb, line 74 def seconds_per_retry(retry_count) seconds_per_retry_arr[retry_count - 1] end
seconds_per_retry_arr()
click to toggle source
# File lib/slow_down/configuration.rb, line 78 def seconds_per_retry_arr @seconds_per_retry_arr ||= begin klass = case retry_strategy when :linear Strategy::Linear when :fibonacci Strategy::Fibonacci when :inverse_exponential Strategy::InverseExponential else retry_strategy end unless klass.is_a?(Class) && klass < Strategy::Base raise ConfigError, ":retry_strategy should be a class inheriting SlowDown::Strategy::Base" end klass.new(retries, timeout).normalized_series end end