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