【问题标题】:Heroku throws undefined method `devise_for'Heroku 抛出未定义的方法“devise_for”
【发布时间】:2013-02-27 07:26:39
【问题描述】:

我有一个在本地运行的应用程序,它可以正常运行。我已经为 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

【问题讨论】:

  • 你能添加'/app/app/controllers/users_controller.rb'的第一行吗
  • 你在正确的堆栈上吗?您的依赖项需要 Cedar。此外,通过运行heroku run console 并输入Devise.mappings.keys,查看是否在 Heroku 上正确安装了 Devise。如果没有正确安装 Devise,这将引发错误。
  • @Leito 我添加了这些行。 zeantsoi 我无法进入控制台,因为当我尝试进入控制台时它会抛出异常。
  • @Ruby 看起来是一门值得一看的语言

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


【解决方案1】:

您是否尝试在本地运行它? devise_for 应该在您的路线上,而不是在控制器中,请参阅 https://github.com/plataformatec/devise 以确保您的设置正确。你不需要重写控制器,除非你用它做一些特别的事情。如果我在你的位置上,我会先尝试做最少的改变,然后按照你想要的方式逐步改变它。

【讨论】:

  • 非常感谢。是的,我的控制器和路线中有它。我跟着两个教程,我搞混了。奇怪的是,它在本地工作......
猜你喜欢
  • 2011-06-16
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多