Ruby on rails 模块中的类名冲突

Ruby on rails 模块中的类名冲突,ruby-on-rails,omniauth,Ruby On Rails,Omniauth,我正在实现一个客户端web应用程序,该应用程序使用Omniauth连接到API,如下所示 我在/lib/omniauth/strategies/testservice.rb module OmniAuth:: Strategies class Testservice < OmniAuth::Strategies::OAuth2 option :name, :testservice end end 它将失败 但是,如果我将类的名称Testservice缩短为一个

我正在实现一个客户端web应用程序,该应用程序使用Omniauth连接到API,如下所示

我在
/lib/omniauth/strategies/testservice.rb

module OmniAuth:: Strategies
    class Testservice < OmniAuth::Strategies::OAuth2
      option :name, :testservice
    end
end
它将失败

但是,如果我将类的名称
Testservice
缩短为一个单词,例如
Test
,那么它就可以工作了

我怀疑我的类名与Rails命名约定冲突。由于Omniauth gem的一些限制,我无法将类名创建为TestService


如何克服此问题?

在发生冲突的情况下,请使用完全限定的类名,即与包名(如com.test.test)一起使用。它将帮助您避免冲突

添加
OmniAuth.config.add\u camelization'testservice',testservice
修复该问题

require File.expand_path('lib/omniauth/strategies/testservice', Rails.root)