1. ホーム
  2. ruby-on-rails

[解決済み】bcrypt LoadError: Cannot load such file

2022-02-18 13:25:19

質問

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

ジェムファイルです。

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, rails サーバを再起動するだけです。 .
これにより、アプリケーションが再読み込みされ、新しくインストールされたbcryptの依存関係がピックアップされるはずです。