Ответ 1
после запуска bundle install
для установки bcrypt
, не забудьте перезапустить сервер rails.
Это сработало для меня.
Я пытаюсь настроить функцию входа для моего приложения Rails, я получаю сообщение об ошибке bcrypt при нажатии кнопки входа в систему:
LoadError in SessionsController#create
cannot load such file -- bcrypt
Кто-нибудь еще получает эту ошибку? У меня есть последняя версия bcrypt, и я слежу за тем, что мне посоветовало сделать.
Модель пользователя: я помещаю звездочки вокруг строки, где якобы есть ошибка.
class User < ActiveRecord::Base
****has_secure_password****
end
Контроллер сеансов:
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by(id: params[session][:id])
if user && user.authenticate(params[:session][:password])
log_in user
redirect_to root_path
else
flash.now[:danger] = 'Invalid'
render 'new'
end
end
def destroy
end
end
ApplicationController:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
include SessionsHelper
end
SessionsHelper:
module SessionsHelper
def log_in(user)
session[:user_id] = user.id
end
end
Gemfile:
gem 'bcrypt', '~> 3.1.7'
Сессии/новый вид:
<div id= "admin-sign-in">
<%= form_for(:session, url: login_path) do |f| %>
<%= f.label :id %>
<%= f.text_field :id %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.submit "Log in", class: "btn btn-primary" %>
<% end %>
</div>
после запуска bundle install
для установки bcrypt
, не забудьте перезапустить сервер rails.
Это сработало для меня.
убедитесь, что вы не только запускаете установку пакета, но и ТАКЖЕ убиваете сервер и перезагружаете его, чтобы он загружался в новые драгоценные камни. вы также можете проверить свой gemfile на "spring". если они тоже загружены, вы захотите это прокомментировать, перезагрузите сервер и попробуйте. который должен заботиться обо всех возможностях.
Убийство spring процесс и перезапуск Guard решили проблему для меня:
$ ps aux | grep spring
возвращено четыре процесса spring:
ubuntu 11526 0.0 0.0 298748 24348 pts/1 Sl 22:08 0:00 spring server | mh03_sample_app | started 16 mins ago
ubuntu 11529 0.4 0.1 531764 79204 ? Ssl 22:08 0:04 spring app | mh03_sample_app | started 16 mins ago | test mode
...
...
kill (один за другим):
$ kill -15 11526
$ kill -15 11529
$ kill ...
$ kill ...
и перезапустите:
$ bundle exec guard
Для приятного объяснения см. учебник Michael Hartl Rails https://www.railstutorial.org/book/static_pages#aside-processes
У меня была такая же проблема, но я не смог ее решить, пока не отредактировал файл Gemfile, и раскомментировал строку
gem 'bcrypt', '~> 3.1.7'
Я изначально установил версию 3.1.7, потому что я был обеспокоен, если были проблемы с совместимостью с более поздними версиями, на основе чего-то, что я прочитал в другом решении этой проблемы, но 3.1.7 также не удалось с другим сообщением об ошибке. Тем не менее, 3.1.11 работал отлично, и поэтому я столкнулся с комментарием в Gemfile, чтобы прочитать
gem 'bcrypt', '~> 3.1.11
и снова запустить пакет. Это сработало.