将gem类放入命名空间

时间:2017-06-15 07:24:18

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

对于我的Rails Gemfile,我添加了一个新的gem。它的使用方式如下:

Email::Client

我现在遇到的问题是我的rails应用程序中还有一个名为Email的课程。现在,有时当我尝试初始化它时,我收到以下错误:

Email.new # >> undefined method 'new' for Email:Module

可能是因为Email是宝石中的Module。我该如何解决这个问题?有没有办法命名宝石模块?我不想重命名我的电子邮件类。

1 个答案:

答案 0 :(得分:2)

  

我不想重命名电子邮件类。

然而,这是你必须要做的。您的代码是您唯一控制的代码。重命名/别名(MyEmail)或命名空间(MyApp::Email)。

顺便说一句,这次你很容易下车。想象一下,如果另一个Email也是一个类,会发生什么。突然间,你所有的方法都消失了。您添加或更改方法,您的电子邮件看不到它。这可能会导致令人沮丧的调试会话。