BCrypt :: Errors :: InvalidSalt: Invalid salt.
I am getting this error when I try to create a new user like this
>> User.create(:email=>"nandosousafr@gmail.com", :password => "hello")
BCrypt::Errors::InvalidSalt: invalid salt
from /Library/Ruby/Gems/1.8/gems/bcrypt-ruby-3.0.1/lib/bcrypt.rb:56:in `hash_secret'
from /Library/Ruby/Gems/1.8/gems/bcrypt-ruby-3.0.1/lib/bcrypt.rb:161:in `create'
from /Library/Ruby/Gems/1.8/gems/devise-2.1.2/lib/devise/models/database_authenticatable.rb:110:in `password_digest'
from /Library/Ruby/Gems/1.8/gems/devise-2.1.2/lib/devise/models/database_authenticatable.rb:37:in `password='
from /Library/Ruby/Gems/1.8/gems/activerecord-3.2.2/lib/active_record/attribute_assignment.rb:85:in `send'
from /Library/Ruby/Gems/1.8/gems/activerecord-3.2.2/lib/active_record/attribute_assignment.rb:85:in `assign_attributes'
from /Library/Ruby/Gems/1.8/gems/activerecord-3.2.2/lib/active_record/attribute_assignment.rb:78:in `each'
from /Library/Ruby/Gems/1.8/gems/activerecord-3.2.2/lib/active_record/attribute_assignment.rb:78:in `assign_attributes'
from /Library/Ruby/Gems/1.8/gems/activerecord-3.2.2/lib/active_record/base.rb:495:in `initialize'
from /Library/Ruby/Gems/1.8/gems/activerecord-3.2.2/lib/active_record/persistence.rb:44:in `new'
from /Library/Ruby/Gems/1.8/gems/activerecord-3.2.2/lib/active_record/persistence.rb:44:in `create'
from (irb):3
<P →
Gemfile
require 'rbconfig'
HOST_OS = RbConfig::CONFIG['host_os']
source 'https://rubygems.org'
gem 'rails', '3.2.2'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'mysql2'
# 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'
gem "compass-rails"
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer'
gem 'less'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
gem 'twitter-bootstrap-rails'
gem "friendly_id", "~> 4.0.1"
gem "rest-client"
gem "haml", ">= 3.1.6"
gem "haml-rails", ">= 0.3.4", :group => :development
gem "devise", ">= 2.1.0"
gem "cancan", ">= 1.6.7"
gem "rolify", ">= 3.1.0"
gem "therubyracer", :group => :assets, :platform => :ruby
gem "simple_form"
gem "will_paginate", ">= 3.0.3"
gem "paperclip", "~> 2.7"
gem "rdiscount"
gem 'oily_png'
User.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
end
I googled it and found an article that made me put config.encryptor =: sha1 and not config.encryptor =: bcrypt, but the problem was not resolved.
anyone?
+1
source to share
2 answers
Reinstalling bcrypt-ruby did not work for me.
Fixed a bug in bcrypt-ruby> = 3.1.10 , but Rails 3.2 blocked on bcrypt-ruby 3.0.x .
The solution would be either:
- upgrade to a newer version of Rails (> = 4)
- use an earlier version of Ruby (2.1.x)
- fork my changes and follow the security updates yourself (as Rails 3.2 currently only supports major security updates)
0
source to share