J'essaie de configurer une fonction de connexion pour mon application Rails. Un message d'erreur bcrypt s'affiche lorsque j'appuie sur le bouton de connexion:
LoadError in SessionsController#create
cannot load such file -- bcrypt
Est-ce que quelqu'un d'autre a cette erreur? J'ai la dernière version de bcrypt et je suis exactement ce que le tutoriel m'a dit de faire.
Modèle d'utilisateur: J'ai mis des astérisques autour de la ligne où l'erreur est supposée être.
class User < ActiveRecord::Base
****has_secure_password****
end
Contrôleur de sessions:
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'
Sessions/nouvelle vue:
<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>
Si vous avez exécuté: bundle install
.__ pour installer bcrypt, redémarrez le serveur Rails. Cela a fonctionné pour moi.
assurez-vous non seulement que vous exécutez l'installation du paquet, mais également que vous supprimez le serveur et le rechargez pour vous assurer qu'il se charge ensuite dans les nouveaux gems. vous pouvez également consulter votre fichier gem pour le «printemps». si c'est aussi chargé, vous voudrez peut-être commenter, recharger le serveur et l'essayer ensuite. cela devrait prendre en charge toutes les possibilités.
Tuer le processus printanier et redémarrer Guard a résolu le problème pour moi:
$ ps aux | grep spring
a renvoyé quatre processus printaniers:
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
...
...
tuer (un par un):
$ kill -15 11526
$ kill -15 11529
$ kill ...
$ kill ...
et redémarrer:
$ bundle exec guard
Pour une explication intéressante, voir le didacticiel Rails de Michael Hartl https://www.railstutorial.org/book/static_pages#aside-processes
J'avais le même problème, mais je ne pouvais pas le résoudre avant d'éditer le fichier Gemfile et de décommenter la ligne.
gem 'bcrypt', '~> 3.1.7'
J'ai initialement installé la version 3.1.7 car je craignais des problèmes de compatibilité avec les versions ultérieures, basés sur quelque chose que j'ai lu dans une autre solution à ce problème, mais 3.1.7 a également échoué avec un autre message d'erreur. Cependant, 3.1.11 fonctionnait parfaitement et j’ai donc ajouté le commentaire dans le fichier Gemfile comme suit:
gem 'bcrypt', '~> 3.1.11
et a exécuté le paquet installer encore… .. Cela a fonctionné.