File: active_support/core_ext/module/inclusion.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: <Built-in Module>
  class: Module#1
includes
  Module ( ActiveSupport::CoreExtensions )
  ClassMethods ( ActiveSupport::Deprecation )
inherits from
  Object ( Builtin-Module )
has properties
method: included_in_classes #21

Class Hierarchy

Object ( Builtin-Module )
  Module    #1

Code

   1  class Module
   2    # Returns the classes in the current ObjectSpace where this module has been
   3    # mixed in according to Module#included_modules.
   4    #
   5    #   module M
   6    #   end
   7    #   
   8    #   module N
   9    #     include M
  10    #   end
  11    #   
  12    #   class C
  13    #     include M
  14    #   end
  15    #   
  16    #   class D < C
  17    #   end
  18    #
  19    #   p M.included_in_classes # => [C, D]
  20    #
  21    def included_in_classes
  22      classes = []
  23      ObjectSpace.each_object(Class) { |k| classes << k if k.included_modules.include?(self) }
  24 
  25      classes.reverse.inject([]) do |unique_classes, klass| 
  26        unique_classes << klass unless unique_classes.collect { |k| k.to_s }.include?(klass.to_s)
  27        unique_classes
  28      end
  29    end
  30  en