我有以下模块结构:
-->Analytics (module)
--> Reporting
--> Metrics
--> Computed
-->Content (class)
在Computed
内,我有一些模块常量FOO
。 Content
中有许多方法可以深入Computed
并访问FOO
。目前,这样做的方式是:
#content.rb
...
def do_something
...
foo = Analytics::Reporting::Metrics::Computed::FOO
...
end
访问深层嵌套模块常量或变量的最佳实践是什么?我不能以任何不同方式命名Content
。有更好的方法吗?
答案 0 :(得分:2)
进入Content
的班级主体后,请执行以下操作:
include Analytics::Reporting::Metrics::Computed
然后,您将无法使用显式命名空间访问FOO
。
module A
module B
module C
module D
FOO = "This is FOO from A::B::C::D"
end
end
end
end
class E
include A::B::C::D
p FOO
end
# => "This is FOO from A::B::C::D"
答案 1 :(得分:1)
虽然这是我的观点,但我会考虑在配置级别存储它,可能使用figaro或类似的方式,特别是如果它可以被许多不同的类访问。