Module: MongoMapper::Plugins

Included in:
Document, EmbeddedDocument
Defined in:
lib/mongo_mapper.rb,
lib/mongo_mapper/plugins.rb,
lib/mongo_mapper/plugins/sci.rb,
lib/mongo_mapper/plugins/keys.rb,
lib/mongo_mapper/plugins/safe.rb,
lib/mongo_mapper/plugins/clone.rb,
lib/mongo_mapper/plugins/dirty.rb,
lib/mongo_mapper/plugins/rails.rb,
lib/mongo_mapper/plugins/stats.rb,
lib/mongo_mapper/plugins/touch.rb,
lib/mongo_mapper/plugins/logger.rb,
lib/mongo_mapper/plugins/scopes.rb,
lib/mongo_mapper/plugins/caching.rb,
lib/mongo_mapper/plugins/indexes.rb,
lib/mongo_mapper/plugins/inspect.rb,
lib/mongo_mapper/plugins/document.rb,
lib/mongo_mapper/plugins/dumpable.rb,
lib/mongo_mapper/plugins/equality.rb,
lib/mongo_mapper/plugins/keys/key.rb,
lib/mongo_mapper/plugins/querying.rb,
lib/mongo_mapper/plugins/callbacks.rb,
lib/mongo_mapper/plugins/modifiers.rb,
lib/mongo_mapper/plugins/protected.rb,
lib/mongo_mapper/plugins/shardable.rb,
lib/mongo_mapper/plugins/accessible.rb,
lib/mongo_mapper/plugins/pagination.rb,
lib/mongo_mapper/plugins/timestamps.rb,
lib/mongo_mapper/plugins/userstamps.rb,
lib/mongo_mapper/plugins/keys/static.rb,
lib/mongo_mapper/plugins/persistence.rb,
lib/mongo_mapper/plugins/validations.rb,
lib/mongo_mapper/plugins/active_model.rb,
lib/mongo_mapper/plugins/associations.rb,
lib/mongo_mapper/plugins/identity_map.rb,
lib/mongo_mapper/plugins/counter_cache.rb,
lib/mongo_mapper/plugins/serialization.rb,
lib/mongo_mapper/plugins/partial_updates.rb,
lib/mongo_mapper/plugins/dynamic_querying.rb,
lib/mongo_mapper/plugins/associations/base.rb,
lib/mongo_mapper/plugins/embedded_document.rb,
lib/mongo_mapper/plugins/strong_parameters.rb,
lib/mongo_mapper/plugins/embedded_callbacks.rb,
lib/mongo_mapper/plugins/associations/proxy/proxy.rb,
lib/mongo_mapper/plugins/associations/one_association.rb,
lib/mongo_mapper/plugins/associations/proxy/one_proxy.rb,
lib/mongo_mapper/plugins/associations/many_association.rb,
lib/mongo_mapper/plugins/associations/proxy/collection.rb,
lib/mongo_mapper/plugins/associations/proxy/one_as_proxy.rb,
lib/mongo_mapper/plugins/associations/single_association.rb,
lib/mongo_mapper/plugins/dynamic_querying/dynamic_finder.rb,
lib/mongo_mapper/plugins/querying/decorated_plucky_query.rb,
lib/mongo_mapper/plugins/associations/proxy/in_array_proxy.rb,
lib/mongo_mapper/plugins/associations/belongs_to_association.rb,
lib/mongo_mapper/plugins/associations/proxy/belongs_to_proxy.rb,
lib/mongo_mapper/plugins/associations/proxy/one_embedded_proxy.rb,
lib/mongo_mapper/plugins/associations/proxy/embedded_collection.rb,
lib/mongo_mapper/plugins/associations/proxy/many_embedded_proxy.rb,
lib/mongo_mapper/plugins/associations/proxy/many_documents_proxy.rb,
lib/mongo_mapper/plugins/rails/active_record_association_adapter.rb,
lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb,
lib/mongo_mapper/plugins/associations/proxy/many_polymorphic_proxy.rb,
lib/mongo_mapper/plugins/associations/proxy/many_documents_as_proxy.rb,
lib/mongo_mapper/plugins/associations/proxy/belongs_to_polymorphic_proxy.rb,
lib/mongo_mapper/plugins/associations/proxy/one_embedded_polymorphic_proxy.rb,
lib/mongo_mapper/plugins/associations/proxy/many_embedded_polymorphic_proxy.rb

Defined Under Namespace

Modules: Accessible, ActiveModel, Associations, Caching, Callbacks, Clone, CounterCache, Dirty, Document, Dumpable, DynamicQuerying, EmbeddedCallbacks, EmbeddedDocument, Equality, IdentityMap, Indexes, Inspect, Keys, Logger, Modifiers, Pagination, PartialUpdates, Persistence, Protected, Querying, Rails, Safe, Sci, Scopes, Serialization, Shardable, Stats, StrongParameters, Timestamps, Touch, Userstamps, Validations Classes: XmlSerializer

Constant Summary collapse

DescendantsArray =
::Array

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.direct_descendants_hashObject



10
11
12
# File 'lib/mongo_mapper/plugins.rb', line 10

def self.direct_descendants_hash
  @direct_descendants_hash ||= Hash.new { |h,k| h[k] = DescendantsArray.new }
end

Instance Method Details

#direct_descendantsObject



25
26
27
# File 'lib/mongo_mapper/plugins.rb', line 25

def direct_descendants
  Plugins.direct_descendants_hash[self]
end

#included(base = nil) ⇒ Object



29
30
31
32
# File 'lib/mongo_mapper/plugins.rb', line 29

def included(base = nil)
  direct_descendants << base if base
  super
end

#inherited(subclass) ⇒ Object



34
35
36
37
# File 'lib/mongo_mapper/plugins.rb', line 34

def inherited(subclass)
  direct_descendants << subclass
  super
end

#plugin(mod) ⇒ Object

Raises:

  • (ArgumentError)


18
19
20
21
22
23
# File 'lib/mongo_mapper/plugins.rb', line 18

def plugin(mod)
  raise ArgumentError,  "Plugins must extend ActiveSupport::Concern" unless ActiveSupport::Concern === mod
  include mod
  direct_descendants.each {|model| model.send(:include, mod) }
  plugins << mod
end

#pluginsObject



14
15
16
# File 'lib/mongo_mapper/plugins.rb', line 14

def plugins
  @plugins ||= []
end