Sha256: fc9d440b1b55f9f53f10be4b7ccde199fc4399d441ca809e43b11431a46c04bb
Contents?: true
Size: 1.57 KB
Versions: 4
Compression:
Stored size: 1.57 KB
Contents
require 'dm-core' require 'dm-aggregates/aggregate_functions' require 'dm-aggregates/collection' require 'dm-aggregates/core_ext/symbol' require 'dm-aggregates/model' require 'dm-aggregates/query' require 'dm-aggregates/repository' module DataMapper module Aggregates def self.include_aggregate_api %i(Repository Model Collection Query).each do |name| DataMapper.const_get(name).send(:include, const_get(name)) end Adapters::AbstractAdapter.descendants.each do |adapter_class| Adapters.include_aggregate_api(DataMapper::Inflector.demodulize(adapter_class.name)) end end end module Adapters def self.include_aggregate_api(const_name) require aggregate_extensions(const_name) if Aggregates.const_defined?(const_name) adapter = const_get(const_name) adapter.send(:include, aggregate_module(const_name)) end rescue LoadError # Silently ignore the fact that no adapter extensions could be required # This means that the adapter in use doesn't support aggregates end def self.aggregate_module(const_name) Aggregates.const_get(const_name) end class << self # @api private private def aggregate_extensions(const_name) name = adapter_name(const_name) name = 'do' if name == 'dataobjects' "dm-aggregates/adapters/dm-#{name}-adapter" end end extendable do # @api private def const_added(const_name) include_aggregate_api(const_name) super end end end Aggregates.include_aggregate_api end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
sbf-dm-aggregates-1.5.0 | lib/dm-aggregates.rb |
sbf-dm-aggregates-1.4.0 | lib/dm-aggregates.rb |
sbf-dm-aggregates-1.3.0 | lib/dm-aggregates.rb |
sbf-dm-aggregates-1.3.0.beta | lib/dm-aggregates.rb |