2011-03-16 35 views
0

我已經使用Authlogic使我的應用程序工作(即sign_in和sign_up),現在我試圖通過Authlogic_OAuth gem添加對OAuth的支持。我已經完成了所有基本設置(我認爲),並且在登錄頁面中添加了「使用Twitter登錄」按鈕。問題是,當我按一下按鈕我得到這個錯誤:Authlogic_OAuth在Rails 3中失敗,錯誤爲「未初始化的常量UserSession :: OAuth」

uninitialized constant UserSession::OAuth 

與應用程序跟蹤:

app/models/user_session.rb:17:in `oauth_consumer' 
app/controllers/user_sessions_controller.rb:23:in `create' 

的功能失敗是我USER_SESSION模型:

# authlogic_oauth hacks              
# Twitter example                
def self.oauth_consumer 
    OAuth::Consumer.new("TOKEN", "SECRET", 
     { :site => "http://twitter.com", 
     :authorize_url => "http://twitter.com/oauth/authenticate"}) 
end 

我對rails和ruby很新,所以我不太明白這個命名空間碰撞來自哪裏或者如何解決它。任何幫助將不勝感激。

回答

2

好的,我想通了。問題在於OAuth :: Consumer未使用authlogic_oauth進行定義。它實際上在oauth寶石中定義。所以我更新了我的Gemfile到:

gem 'authlogic', '2.1.6' 
# set up oauth capabilities. Note: :lib is replaced with :require in rails 3 
gem 'authlogic-oauth', '1.0.8', :require => 'authlogic_oauth' 
gem 'oauth', '0.4.4' 

然後運行:

bundle install 

和,不要忘記重啓軌道服務器,以便重新加載從Gemfile中的寶石。

1

嘗試將OAuth更改爲::OAuth。冒號意味着你想從課外訪問OAuth。它正在從你的班級進行搜索。

+1

這似乎不是它。添加該範圍只會導致錯誤更改爲「未初始化的常量OAuth」。謝謝你的評論。 – spinlock 2011-03-16 23:58:42

相關問題