Authlogic_OAuth завершается с ошибкой «неинициализированная константа UserSession :: OAuth» в Rails 3 - PullRequest
0 голосов
/ 17 марта 2011

Я заставил мое приложение работать (т.е. sign_in и sign_up) с Authlogic, и сейчас я пытаюсь добавить поддержку OAuth через гем Authlogic_OAuth. Я настроил все основы (я думаю) и добавил кнопку «Войти через Twitter» на свою целевую страницу. Проблема в том, что когда я нажимаю кнопку, я получаю эту ошибку:

 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

Я довольно новичок в рельсах и рубине, поэтому я не совсем понимаю, откуда происходит это столкновение пространства имен или как его решить. Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 17 марта 2011

ОК, я понял это.Проблема в том, что 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

и не забудьте перезапустить сервер rails, чтобы он перезагрузил драгоценные камни из Gemfile.

1 голос
/ 17 марта 2011

Попробуйте изменить OAuth на ::OAuth. Двоеточие означает, что вы хотите получить доступ к OAuth за пределами вашего класса Это был поиск из вашего класса.

...