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 serverを再起動することを忘れないでください。
それは私のために働いた。
バンドルインストールを実行するだけでなく、サーバーを強制終了してリロードし、新しいgemを確実にロードするようにしてください。 gemfileで「spring」を確認することもできます。それもロードされている場合は、コメントアウトし、サーバーをリロードしてから試してください。それはすべての可能性の世話をする必要があります。
私は同じ問題を抱えていましたが、Gemfileファイルを編集し、行のコメントを外すまで解決できませんでした
gem 'bcrypt', '~> 3.1.7'
この問題の別の解決策で読んだものに基づいて、後のバージョンとの互換性の問題があるのではないかと心配していたため、最初にバージョン3.1.7をインストールしましたが、3.1.7も別のエラーメッセージで失敗しました。しかし、3.1.11は完全に機能したので、Gemfileのコメントを読み上げて読みました
gem 'bcrypt', '~> 3.1.11
バンドルのインストールを再度実行しました。これはうまくいきました。
Springプロセスを終了してGuardを再起動すると、問題が解決しました。
$ ps aux | grep spring
4つのスプリングプロセスを返しました。
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
...
...
殺す(1つずつ):
$ kill -15 11526
$ kill -15 11529
$ kill ...
$ kill ...
そして再起動:
$ bundle exec guard
素敵な説明については、Michael HartlのRailsチュートリアル https://www.railstutorial.org/book/static_pages#aside-processes を参照してください。