Ошибка контроллера регистрации пользователя heroku & devise

Я только что переключился на комбинацию Devise/Omniauth, и на моем локальном сервере все работает правильно. Однако, когда я загрузил его на heroku, приложение вылетает, когда пользователь нажимает кнопку регистрации в традиционной форме регистрации (не для входа в систему omniauth). Я использую рельсы 3. Мои журналы говорят

LoadError (нет такого файла для загрузки --bcrypt): app/controllers/registrations_controller.rb:11 в 'build_resource' app/controllers/registrations_controller.rb:4 в 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 являются супер, поскольку контроллер регистрации переопределяет Devise. Что происходит не так? Спасибо.


person John    schedule 01.02.2011    source источник


Ответы (2)


Убедитесь, что у вас есть:

gem 'bcrypt-ruby'

в вашем Gemfile. Если нет, добавьте его и запустите

bundle install

Кроме того, вам, возможно, придется удалить свой Gemfile.lock и попытаться снова нажать на Heroku.

person David    schedule 01.02.2011
comment
Спасибо. Для его установки требовалось удалить Gemfile.lock, но теперь он работает. - person John; 01.02.2011

У меня была такая же проблема с запуском рельсовой трансляции Omniauth на героку.

gem 'bcrypt-ruby'

Сделал трюк и не нужно удалять Gemfile.lock. Мне также понадобилось:

heroku stack:migrate bamboo-mri-1.9.2
person jacob    schedule 28.03.2011