class Elasticsearch::Model::Response::Aggregations
Public Class Methods
new(attributes={})
click to toggle source
Calls superclass method
# File lib/elasticsearch/model/response/aggregations.rb, line 25 def initialize(attributes={}) __redefine_enumerable_methods super(attributes) end
Public Instance Methods
__redefine_enumerable_methods(h)
click to toggle source
Fix the problem of Hashie::Mash returning unexpected values for `min` and `max` methods
People can define names for aggregations such as `min` and `max`, but these methods are defined in `Enumerable#min` and `Enumerable#max`
{ foo: 'bar' }.min # => [:foo, "bar"]
Therefore, any Hashie::Mash instance value has the `min` and `max` methods redefined to return the real value
# File lib/elasticsearch/model/response/aggregations.rb, line 40 def __redefine_enumerable_methods(h) if h.respond_to?(:each_pair) h.each_pair { |k, v| v = __redefine_enumerable_methods(v) } end if h.is_a?(Hashie::Mash) class << h define_method(:min) { self[:min] } define_method(:max) { self[:max] } end end end