Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Module | ancestors

概要

Module#ancestors -> [Class, Module]

詳細

スーパークラス、インクルードモジュールを優先度順に配列で取得する。

サンプルコード
require 'tbpgr_utils'

module ParentModule
end

class ImplModuleClass
  include ParentModule
end

class ExtendedClass < ImplModuleClass;end

bulk_puts_eval binding, <<-EOS
ExtendedClass.ancestors
ExtendedClass.superclass
ExtendedClass.superclass.superclass
ExtendedClass.included_modules
EOS

puts ExtendedClass.aa_ancestors

__END__
下記はTbpgrUtils gemの機能
bulk_puts_eval
aa_ancestors

https://rubygems.org/gems/tbpgr_utils
https://github.com/tbpgr/tbpgr_utils

出力

出力

ExtendedClass.ancestors             # => [ExtendedClass, ImplModuleClass, ParentModule, Object, Kernel, BasicObject]
ExtendedClass.superclass            # => ImplModuleClass
ExtendedClass.superclass.superclass # => Object
ExtendedClass.included_modules      # => [ParentModule, Kernel]
-----------------
|  BasicObject  |
-----------------
       |
-----------------
|    Kernel     |
-----------------
       |
-----------------
|    Object     |
-----------------
       |
-----------------
| ParentModule  |
-----------------
       |
-----------------
|ImplModuleClass|
-----------------
       |
-----------------
| ExtendedClass |
-----------------