Ruby已经在使用我的模型的类名

Oct*_*Inc 2 ruby conflict namespaces ruby-on-rails class

我正在制作一个具有各种授权级别的论坛应用程序,其中一个是Monitor.我是通过扩展我的User类来做到这一点的,我计划用"-ship"类(例如管理员,作者,主持人等)对此进行微调.显然,Monitor类是ruby mixin的一部分.如何在没有冲突的情况下保留我的资源名称?

Pet*_*son 7

一些可能性:

  • 避免require 'monitor.rb'拉入标准Monitor实例的调用
  • 做一些运行时魔术来重命名现有的Monitor类.
  • 猴子用你的负载路径,以便require 'monitor.rb'拉入一个空的Monitor实现.

但在所有情况下,您最终都会遇到第三方库正在使用Monitor的情况,期望它是标准的Monitor类.所以,我建议反对以上任何一个.

我会说你唯一合理的选择是:

A)您可以将您的类放在命名空间中:

Module MyApp
  class Monitor
    #...
  end
end
Run Code Online (Sandbox Code Playgroud)

如果您的应用程序使用某种自动需要的魔法(例如它是一个rails应用程序),那么您将把您的实现放在/my_app/monitor.rb中.当你想要引用那个类时,你会做类似的事情my_monitor = MyApp::Monitor.new(),或者其他什么.

B)你可以使用不同的类名:)