Tag: 模块

如何列出Ruby类中包含的模块?

您如何列出Ruby中类层次结构中特定类中包含的模块? 像这样的东西: module SomeModule end class ParentModel < Object include SomeModule end class ChildModel [SomeModule] p ChildModel.included_modules(false) #=> [] 列出祖先会使模块在树中显得更高: p ChildModel.ancestors #=> [ChildModel, ParentModel, SomeModule, Object, Kernel]

将现有类添加到模块中

我在app / classes文件夹中有一些现有的ruby类: class A … end class B … end 我想在模块MyModule中对这些类进行分组 我知道我可以这样做: module MyModule class A … end class B … end end 但是有一个元编程快捷方式可以做同样的事情,所以我可以“导入”所有现有的类? 谢谢,吕克

是否可以为子模块提供与顶级类相同的名称?

背景: ruby认为即使我指定了完整的命名空间,我也引用了顶级常量 如何在ruby中引用子模块的“完整路径”? 这是问题,简化为最小的例子: # bar.rb class Bar end # foo/bar.rb module Foo::Bar end # foo.rb class Foo include Foo::Bar end # runner.rb require ‘bar’ require ‘foo’ ➔rubyrunner.rb ./foo.rb:2:warning:Foo :: Bar引用的toplevel常量Bar ./foo.rb:2:in`include’:错误的参数类型Class(expect Module)(TypeError) 来自./foo.rb:2 来自runner.rb:2:在`require’中 来自runner.rb:2

获取包含模块的类列表

我有一个mixin,我想获得包含它的所有类的列表。 在mixin模块中,我做了以下事情: module MyModule def self.included(base) @classes ||= [] @classes << base.name end def self.classes @classes end end class MyClass include MyModule end 这非常有效: > MyModule.classes #=> nil > MyClass.new #=> # > MyModule.classes #=> [“MyClass”] 现在,我想将这部分提取到一个单独的模块中,该模块可以包含在我的其他mixins中。 所以,我想出了以下内容: module ListIncludedClasses def self.included(base) p “…adding #{base.name} to #{self.name}.classes” @classes ||= [] @classes << base.name base.extend(ClassMethods) end […]