Sha256: 1c8baa0a043eef8228ef6f618e605f99df24d870e5760a912ee658777a447d27
Contents?: true
Size: 940 Bytes
Versions: 3
Compression:
Stored size: 940 Bytes
Contents
# encoding: UTF-8 module MongoMapper module Plugins if defined?(ActiveSupport::DescendantsTracker::DescendantsArray) DescendantsArray = ::ActiveSupport::DescendantsTracker::DescendantsArray else DescendantsArray = ::Array end def self.direct_descendants_hash @direct_descendants_hash ||= Hash.new { |h,k| h[k] = DescendantsArray.new } end def plugins @plugins ||= [] end 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 def direct_descendants Plugins.direct_descendants_hash[self] end def included(base = nil) direct_descendants << base if base super end def inherited(subclass) direct_descendants << subclass super end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
mongo_mapper-0.17.0 | lib/mongo_mapper/plugins.rb |
mongo_mapper-0.16.0 | lib/mongo_mapper/plugins.rb |
mongo_mapper-0.15.6 | lib/mongo_mapper/plugins.rb |