在我的Rails应用我有一个型号/ foo.rb和型号/富/ exceptions.rb:ruby类和具有相同名称的模块之间的关系是什么?
class Foo
include Foo::Exceptions
end
module Foo::Exceptions
class MySpecialException < Exception
end
end
在轨控制台,然后我看到:
>> Foo::MySpecialException
Foo::Exceptions::MySpecialException < Exception
>> Foo::MySpecialException == Foo::Exceptions::MySpecialException
true
>> Foo::MySpecialException === Foo::Exceptions::MySpecialException
false
- 你对我的文件结构/命名空间有什么看法?
- 是否需要包含
Foo
的行,还是Rails自动包含这些模块? - 为什么
MySpecialException
存在于顶层Foo
命名空间并指向Foo::Exceptions::MySpecialException
? - 这是什么意思,这两个类是
==
但不是===
?
我在irb中探讨了这个问题,但仍然遇到与我在Rails中看到的行为不一致的错误。
相关:What is a conventional place to keep custom Exception definitions in a rails project?
“(我不确定这与你的问题的其余部分有什么关系)” - 因为'module Foo :: Bar'没有暗示'模块'Foo`也存在吗? – 2011-02-07 03:54:24