我刚刚切换到Devise / Omniauth组合,一切都在我的localhost服务器上正常运行。但是,当我上传到heroku时,当用户点击传统注册表单上的注册(而不是omniauth登录)时,应用程序崩溃。我正在使用rails 3.我的日志说
LoadError(没有这样的文件加载--bcrypt): app / controllers / registrations_controller.rb:'build_resource'中的11 app / controllers / registrations_controller.rb:创建'
中的4
引用的控制器:
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行是super,因为注册控制器正在覆盖Devise。出了什么问题?感谢。
答案 0 :(得分:6)
确保您拥有:
gem 'bcrypt-ruby'
你的Gemfile中的。如果没有,请添加并运行
bundle install
此外,您可能必须删除Gemfile.lock并尝试再次推送到Heroku。
答案 1 :(得分:1)
我在heroku上运行Omniauth railscast时遇到了同样的问题。
gem 'bcrypt-ruby'
诀窍和没有必要删除Gemfile.lock。 我还需要:
heroku stack:migrate bamboo-mri-1.9.2