在模块的命名空间下添加一个类

时间:2015-10-13 11:49:47

标签: ruby

我定义了以下类:

class ErrorMailer
end

我有一个模块Test,我希望在其中添加上面的类。我试过两种方式:

# 1)
module Test
  class ErrorMailer < ::ErrorMailer; end
end

# 2)
module Test
  ErrorMailer = ::ErrorMailer
end

1)按预期工作:

(rdb:1) Test.constants
[:ErrorMailer]
(rdb:1) Test::ErrorMailer
Test::ErrorMailer

但是,2)不会:Test在其命名空间下确实没有ErrorMailer

(rdb:1) Test.constants
[:ErrorMailer]
(rdb:1) Test::ErrorMailer
ErrorMailer

我的问题是,这两种方式有什么不同,我如何改进第二种方式来做我期望它做的事情?我觉得当我只想将该类添加到命名空间时,只从类继承看起来不那么好。

P.S。:当然,我已经分别尝试了1)2),而不是同时。

0 个答案:

没有答案