Tag: toplevel

使用Rails自动加载时,名称与顶级常量冲突

我在app/models/dog.rb有一个类Dog ,在app/services/my/deeply/nested/dog.rb另一个类Services::My::Deeply::Nested::Dog 。 现在在Services :: My(app / services / my.rb)中,我引用了以下内容之一(无需区分,因为在所有情况下行为都是相同的): Deeply::Nested::Dog Services::My::Deeply::Nested::Dog ::Services::My::Deeply::Nested::Dog 无论我选择哪一个,我总是收到以下错误消息: services / my.rb:warning:toplevel constant由Services::My::Deeply::Nested::Dog引用的Services::My::Deeply::Nested::Dog 此外,我深深嵌套的狗甚至从未被解释者看到(我通过使用put和语法错误发现,没有任何反应)。 可能的解决方法(我都不喜欢)是: 重命名其中一个Dog类 使用RAILS_ENV = production运行以禁用自动加载并使用预先加载 require_dependency指向深层嵌套的狗 作为一名计算机科学家,我发现上述解决方法都不令人满意。 我想了解为什么没有解决方法就找不到我深深嵌套的Dog,并找出最先进的Ruby / Rails解决方案对于这个问题。 非常感谢提前。