【发布时间】:2018-06-05 04:21:41
【问题描述】:
我想将命名空间添加到我正在定义的类/模块中,但我不想输入长格式
class A::B::C::D::<ClassName>
或
module A
module B
module C
module D
class ClassName
end
end
end
end
end
换句话说,我只想定义类class ClassName,然后需要一种方法将这个类发送到命名空间A::B::C::D下
这样我就可以写一堆这样的代码了:
# File Name: a/b/c/d/some_class.rb
class SomeClass
include SomeModule
# class content
end
# File Name: a/b/c/d/some_module.rb
module SomeModule
# module content
end
因为我的代码库中有太多模块,我不想每次都输入前缀命名空间。但我想在最后说这样的话:
SomeClass.add_to_namespace(A::B::C::D)
SomeModule.add_to_namespace(A::B::C::D)
重要提示:这也应该影响类命名空间查找,以便 Ruby/Rails 不会抱怨:
expected a/b/c/d/some_class.rb to define SomeClass
问题:include-ing 我的类在命名空间中会有同样的效果吗?
module A::B::C::D
include ClassName
end
【问题讨论】:
-
为什么不用
sed写一个quick'n'dirty shell 脚本? -
“我不想输入长格式”——你的意思是在创建一个新的类/模块时?
-
@Stefan yes 在创建类/模块时
-
这听起来像是您的编辑器/IDE 应该帮助您解决的问题。
标签: ruby namespaces