Ruby on rails 模块中的类名冲突
我正在实现一个客户端web应用程序,该应用程序使用Omniauth连接到API,如下所示 我在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缩短为一个
/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)