类名冲突在模块中

时间:2013-06-07 01:32:29

标签: ruby-on-rails omniauth

我正在实施一个客户端Web应用程序,使用Omniauth连接到API,遵循here指令

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

的嵌套模块中定义了一个类
module OmniAuth:: Strategies
    class Testservice < OmniAuth::Strategies::OAuth2
      option :name, :testservice
    end
end

当我在Rails控制台中调用以下内容时:

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

它会失败。

但是,如果我将班级Testservice的名称缩短为单个词,例如Test,那么它就可以了。

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

我如何克服这个问题?

2 个答案:

答案 0 :(得分:1)

如果发生冲突,请使用完全限定的类名,即包括com.test.Test之类的包名。它将帮助您避免冲突

答案 1 :(得分:0)

添加OmniAuth.config.add_camelization 'testservice', 'TestService可解决此问题。 See more here