ruby-on-rails - 将 gem 类放入命名空间

标签 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是gem中的一个Module。我该如何解决这个问题?有没有办法为 gem 模块命名?我不想重命名我的电子邮件类。

最佳答案

I don't want to rename the Email-Class.

但这就是你必须做的。您的代码是您唯一可以控制的东西。重命名/别名 (MyEmail) 或命名空间 (MyApp::Email)。

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

关于ruby-on-rails - 将 gem 类放入命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44561192/

相关文章:

unit-testing - 使用 Authlogic on Rails 3 进行单元测试

ruby-on-rails - 错误运行 rails 生成设计 :install

ruby-on-rails - 使用 Ruby/JRuby 将 pdf 转换为图像

ruby - 如何从哈希中选择前 5 个值?

ruby-on-rails - 嵌入式 Ruby 中的代码以什么顺序执行?

ruby-on-rails-3 - 单个模型上有多个 Carrierwave mount_uploader

ruby-on-rails - 将 Rails 表单发布到 s3 上传的策略和签名问题

mysql - 在 Rails 中运行种子时收到 NO_AUTO_CREATE_USER 弃用警告

Ruby 修改原始变量

ruby-on-rails - 如何找出函数被覆盖的位置?