2012-04-03 3 views
2

Я создал базовое приложение Rails с монгольским, Devise и Omniauth для входа в Facebook. У меня нет никаких проблем работает локально, но когда я пытаюсь нажать на Heroku, я получаю эту ошибку:«uninitialized constant Users (NameError)» w/Heroku deploy

"/app/app/controllers/Users/omniauth_callbacks_controller.rb:1:in `': uninitialized  constant Users (NameError)" 

Я Гугл ад из-за этого с небольшим количеством удачи. Я выполнил модель User, я побежал «heroku run rake db: migrate» и т. Д. Не повезло. Вот мой стек.

Ruby 1.9.2 
Rails 3.2.1 

Gemfile:

require 'rbconfig' 
HOST_OS = RbConfig::CONFIG['host_os'] 
source 'https://rubygems.org' 
gem 'rails', '3.2.1' 
group :assets do 
gem 'sass-rails', '~> 3.2.3' 
gem 'coffee-rails', '~> 3.2.1' 
gem 'uglifier', '>= 1.0.3' 
end 
gem 'jquery-rails' 

gem "bson_ext", ">= 1.6.1" 
gem "mongoid" 
gem "devise" 
gem "zurb-foundation" 
gem "omniauth" 
gem 'omniauth-facebook' 
gem 'gravatar_image_tag' 

Gemfile.lock:

GEM 
remote: https://rubygems.org/ 
specs: 
actionmailer (3.2.1) 
    actionpack (= 3.2.1) 
    mail (~> 2.4.0) 
actionpack (3.2.1) 
    activemodel (= 3.2.1) 
    activesupport (= 3.2.1) 
    builder (~> 3.0.0) 
    erubis (~> 2.7.0) 
    journey (~> 1.0.1) 
    rack (~> 1.4.0) 
    rack-cache (~> 1.1) 
    rack-test (~> 0.6.1) 
    sprockets (~> 2.1.2) 
activemodel (3.2.1) 
    activesupport (= 3.2.1) 
    builder (~> 3.0.0) 
activerecord (3.2.1) 
    activemodel (= 3.2.1) 
    activesupport (= 3.2.1) 
    arel (~> 3.0.0) 
    tzinfo (~> 0.3.29) 
activeresource (3.2.1) 
    activemodel (= 3.2.1) 
    activesupport (= 3.2.1) 
activesupport (3.2.1) 
    i18n (~> 0.6) 
    multi_json (~> 1.0) 
addressable (2.2.7) 
arel (3.0.2) 
bcrypt-ruby (3.0.1) 
bson (1.6.1) 
bson_ext (1.6.1) 
    bson (~> 1.6.1) 
builder (3.0.0) 
coffee-rails (3.2.2) 
    coffee-script (>= 2.2.0) 
    railties (~> 3.2.0) 
coffee-script (2.2.0) 
    coffee-script-source 
    execjs 
coffee-script-source (1.2.0) 
devise (2.0.4) 
    bcrypt-ruby (~> 3.0) 
    orm_adapter (~> 0.0.3) 
    railties (~> 3.1) 
    warden (~> 1.1.1) 
erubis (2.7.0) 
execjs (1.3.0) 
    multi_json (~> 1.0) 
faraday (0.7.6) 
    addressable (~> 2.2) 
    multipart-post (~> 1.1) 
    rack (~> 1.1) 
gravatar_image_tag (1.0.0) 
hashie (1.2.0) 
hike (1.2.1) 
i18n (0.6.0) 
journey (1.0.3) 
jquery-rails (2.0.2) 
    railties (>= 3.2.0, < 5.0) 
    thor (~> 0.14) 
json (1.6.6) 
mail (2.4.4) 
    i18n (>= 0.4.0) 
    mime-types (~> 1.16) 
    treetop (~> 1.4.8) 
mime-types (1.18) 
mongo (1.6.1) 
    bson (~> 1.6.1) 
mongoid (2.4.7) 
    activemodel (~> 3.1) 
    mongo (~> 1.3) 
    tzinfo (~> 0.3.22) 
multi_json (1.2.0) 
multipart-post (1.1.5) 
oauth2 (0.5.2) 
    faraday (~> 0.7) 
    multi_json (~> 1.0) 
omniauth (1.0.3) 
    hashie (~> 1.2) 
    rack 
omniauth-facebook (1.2.0) 
    omniauth-oauth2 (~> 1.0.0) 
omniauth-oauth2 (1.0.0) 
    oauth2 (~> 0.5.0) 
    omniauth (~> 1.0) 
orm_adapter (0.0.7) 
polyglot (0.3.3) 
rack (1.4.1) 
rack-cache (1.2) 
    rack (>= 0.4) 
rack-ssl (1.3.2) 
    rack 
rack-test (0.6.1) 
    rack (>= 1.0) 
rails (3.2.1) 
    actionmailer (= 3.2.1) 
    actionpack (= 3.2.1) 
    activerecord (= 3.2.1) 
    activeresource (= 3.2.1) 
    activesupport (= 3.2.1) 
    bundler (~> 1.0) 
    railties (= 3.2.1) 
railties (3.2.1) 
    actionpack (= 3.2.1) 
    activesupport (= 3.2.1) 
    rack-ssl (~> 1.3.2) 
    rake (>= 0.8.7) 
    rdoc (~> 3.4) 
    thor (~> 0.14.6) 
rake (0.9.2.2) 
rdoc (3.12) 
    json (~> 1.4) 
sass (3.1.15) 
sass-rails (3.2.5) 
    railties (~> 3.2.0) 
    sass (>= 3.1.10) 
    tilt (~> 1.3) 
sprockets (2.1.2) 
    hike (~> 1.2) 
    rack (~> 1.0) 
    tilt (~> 1.1, != 1.3.0) 
thor (0.14.6) 
tilt (1.3.3) 
treetop (1.4.10) 
    polyglot 
    polyglot (>= 0.3.1) 
tzinfo (0.3.32) 
uglifier (1.2.4) 
    execjs (>= 0.3.0) 
    multi_json (>= 1.0.2) 
warden (1.1.1) 
    rack (>= 1.0) 
zurb-foundation (2.2.0.2) 
    jquery-rails (>= 1.0) 
    rails (~> 3.1) 

PLATFORMS 
ruby 

DEPENDENCIES 
bson_ext (>= 1.6.1) 
coffee-rails (~> 3.2.1) 
devise 
gravatar_image_tag 
jquery-rails 
mongoid 
omniauth 
omniauth-facebook 
rails (= 3.2.1) 
sass-rails (~> 3.2.3) 
uglifier (>= 1.0.3) 
zurb-foundation 

Контроллер:

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController 
    def facebook 
    # You need to implement the method below in your model 
@user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user) 

if @user.persisted? 
    flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Facebook" 
    sign_in_and_redirect @user, :event => :authentication 
else 
    session["devise.facebook_data"] = request.env["omniauth.auth"] 
    redirect_to new_user_registration_url 
end 
end 
end 

Любые мысли?

+0

Покажите нам журналы heroku и схему для приложения на Heroku. –

ответ

8

У меня была эта проблема; Я знаю, что это поздний ответ, но я хотел добавить это для тех, кто в нем нуждается.

Убедитесь, что ваш OmniauthCallbacksController IS IN A users FOLDER. "app/controllers/users/omniauth_callbacks_controller.rb"

0

Невероятно, но если вы использовали «rails generate scaffold» или «rails generate controller» для создания контроллера, вам нужно «git add -A», чтобы добавить все вновь созданные файлы в ваш репозиторий. (1) git add -A (2) git commit -m «добавлены новые файлы» (3) git push [предполагается, что вы также используете удаленное репо] (4) git push heroku master (5) heroku run rake db: migrate

Это будет «ошибка новичков», но объяснит ошибку выше. Не спрашивайте, как я знаю!

0

Просто подумал, что добавлю, что у меня была эта проблема, и что вышеупомянутые решения не сработали для меня. Оказывается, причиной в моем случае было то, что Devise заглавил имя подпапки Users (/ app/app/controllers/Users). Удаление папки из git и последующее ее считывание с правильным нижним регистром «users» (/ app/app/controllers/users) решили мою проблему.

Смежные вопросы