lib/prop/options.rb in prop-1.1.0 vs lib/prop/options.rb in prop-1.2.0

- old
+ new

@@ -8,17 +8,24 @@ key = options.fetch(:key) params = options.fetch(:params) defaults = options.fetch(:defaults) result = defaults.merge(params) - result[:key] = Prop::Key.normalize(key) - result[:threshold] = result[:threshold].to_i - result[:interval] = result[:interval].to_i + result[:key] = Prop::Key.normalize(key) - raise RuntimeError.new("Invalid threshold setting") unless result[:threshold] > 0 - raise RuntimeError.new("Invalid interval setting") unless result[:interval] > 0 + result[:strategy] = if leaky_bucket.include?(result[:strategy]) + Prop::LeakyBucketStrategy + elsif result[:strategy] == nil + Prop::IntervalStrategy + else + result[:strategy] # allowing any new/unknown strategy to be used + end + result[:strategy].validate_options!(result) result end + def self.leaky_bucket + [:leaky_bucket, "leaky_bucket"] + end end -end \ No newline at end of file +end