Heroku抛出未定义的方法`devise_for'

时间:2013-03-11 22:47:12

标签: ruby-on-rails ruby-on-rails-3 deployment heroku devise

我有一个在本地运行的应用,它运行正常。我已经为facebook设置了OAuth设计。

当我将应用程序推送到Heroku时,我得到了这个例外:

/app/app/controllers/users_controller.rb:2:in `<class:SessionsController>':
undefined method `devise_for'
for Users::SessionsController:Class (NoMethodError)

但我在本地没有这个错误。

这些是我将它推送到Heroku后采取的步骤:

  • heroku run rake db:migrate
  • 使用heroku restartheroku ps:restart
  • 重新启动了heroku

所以问题不在于我仍然需要重新启动我的服务器。

这是我的gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.12'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'pg'


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
gem 'devise'
gem 'omniauth'
gem 'omniauth-facebook'

可能是什么问题?

修改

以下是错误指向的第一行:

# app/controllers/users/users_controller
class Users::SessionsController < Devise::SessionsController
    devise_for :users, :controllers => { :sessions => "users/sessions" }
end

1 个答案:

答案 0 :(得分:1)

您尝试在本地运行吗? devise_for应位于您的路线上,而不是在控制器中,请参阅https://github.com/plataformatec/devise以确保您的设置正确无误。您不需要覆盖控制器,除非您正在使用它做一些特殊的事情。如果我在哪里,我会先尝试进行最少量的更改,然后按照您想要的方式逐步更改。