2

我刚刚切换到 Devise/Omniauth 组合,一切都在我的 localhost 服务器上正常工作。但是,当我上传到 heroku 时,当用户单击传统注册表单上的注册(不是omniauth 登录)时,应用程序崩溃。我正在使用 rails 3。我的日志说

LoadError(没有要加载的此类文件--bcrypt):app/controllers/registrations_controller.rb:11 in 'build_resource' app/controllers/registrations_controller.rb:4 in create'

引用的控制器:

class RegistrationsController < Devise::RegistrationsController

  def create
    super
    session[:omniauth] = nil unless @user.new_record?
  end

  private

  def build_resource(*args)
    super
    if session[:omniauth]
      @user.apply_omniauth(session[:omniauth])
      @user.valid?
    end
  end 
end

第 4 行和第 11 行是超级代码,因为注册控制器覆盖了设计。怎么了?谢谢。

4

2 回答 2

6

确保你有:

gem 'bcrypt-ruby'

在您的 Gemfile 中。如果没有,添加并运行

bundle install

此外,您可能必须删除 Gemfile.lock 并尝试再次推送到 Heroku。

于 2011-02-01T18:54:33.607 回答
1

我在 heroku 上运行 Omniauth railscast 时遇到了同样的问题。

gem 'bcrypt-ruby'

成功了,无需删除 Gemfile.lock。我还需要:

heroku stack:migrate bamboo-mri-1.9.2
于 2011-03-28T05:26:50.433 回答