module IncludeModule
end
class GrandParentClass
end
class ParentClass < GrandParentClass
include IncludeModule
end
class ChildClass < ParentClass
end
ChildClass.ancestors
[ChildClass, ParentClass, IncludeModule, GrandParentClass, Object, JSON::Ext::Generator::GeneratorMethods::Object, Kernel, BasicObject]
p ChildClass.included_modules
ChildClass.superclass
[IncludeModule, JSON::Ext::Generator::GeneratorMethods::Object, Kernel]
ParentClass
p Module.nesting
module OutsideModule
p Module.nesting
class InnerClass
p Module.nesting
class InnerInnerClass
p Module.nesting
end
end
end
class OutsideModule::InnerClass
p Module.nesting
end
OutsideModule::InnerClass.class_eval do
p Module.nesting
end
[] [OutsideModule] [OutsideModule::InnerClass, OutsideModule] [OutsideModule::InnerClass::InnerInnerClass, OutsideModule::InnerClass, OutsideModule] [OutsideModule::InnerClass] []
[]
class ChildClass
class << self
def class_method
end
end
def instance_method
end
end
p ChildClass.methods
ChildClass.methods(false)
[:class_method, :new, :json_creatable?, :allocate, :superclass, :<=>, :<=, :>=, :==, :===, :included_modules, :include?, :ancestors, :attr, :attr_reader, :attr_writer, :attr_accessor, :freeze, :inspect, :public_instance_methods, :instance_methods, :const_missing, :protected_instance_methods, :private_instance_methods, :const_set, :constants, :remove_class_variable, :class_variable_get, :class_variable_set, :class_variable_defined?, :const_get, :const_defined?, :<, :>, :public_constant, :class_variables, :private_constant, :deprecate_constant, :singleton_class?, :const_source_location, :to_s, :class_eval, :include, :module_exec, :module_eval, :prepend, :undef_method, :alias_method, :class_exec, :remove_method, :method_defined?, :name, :private_class_method, :public_method_defined?, :private_method_defined?, :protected_method_defined?, :public_class_method, :instance_method, :public_instance_method, :define_method, :autoload, :autoload?, :to_json, :dup, :itself, :yield_self, :then, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :frozen?, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :remove_instance_variable, :instance_of?, :kind_of?, :is_a?, :tap, :singleton_class, :clone, :display, :class, :hash, :public_send, :method, :public_method, :singleton_method, :define_singleton_method, :extend, :to_enum, :enum_for, :=~, :!~, :nil?, :eql?, :respond_to?, :object_id, :send, :__send__, :!, :!=, :equal?, :__id__, :instance_eval, :instance_exec]
[:class_method]
cc = ChildClass.new
cc.methods
[:instance_method, :to_json, :dup, :itself, :yield_self, :then, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :frozen?, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :remove_instance_variable, :instance_of?, :kind_of?, :is_a?, :tap, :singleton_class, :clone, :display, :class, :hash, :public_send, :method, :public_method, :singleton_method, :define_singleton_method, :extend, :to_enum, :enum_for, :<=>, :===, :=~, :!~, :nil?, :eql?, :respond_to?, :freeze, :inspect, :object_id, :send, :to_s, :__send__, :!, :==, :!=, :equal?, :__id__, :instance_eval, :instance_exec]
# https://docs.ruby-lang.org/ja/latest/method/Object/i/methods.html
# false を渡すと Object#singleton_methods(false) と同じになる
cc.methods(false)
[]
次回 「10-2-6 クラスやモジュールからインスタンスメソッドを削除する」