web-dev-qa-db-ja.com

bcrypt LoadError:そのようなファイルをロードできません

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>
27
Joe Morano

bundle installを実行してbcryptをインストールした後、Rails serverを再起動することを忘れないでください。
それは私のために働いた。

68
Bruno Paulino

バンドルインストールを実行するだけでなく、サーバーを強制終了してリロードし、新しいgemを確実にロードするようにしてください。 gemfileで「spring」を確認することもできます。それもロードされている場合は、コメントアウトし、サーバーをリロードしてから試してください。それはすべての可能性の世話をする必要があります。

11
Shaun Sweet

私は同じ問題を抱えていましたが、Gemfileファイルを編集し、行のコメントを外すまで解決できませんでした

    gem 'bcrypt', '~> 3.1.7' 

この問題の別の解決策で読んだものに基づいて、後のバージョンとの互換性の問題があるのではないかと心配していたため、最初にバージョン3.1.7をインストールしましたが、3.1.7も別のエラーメッセージで失敗しました。しかし、3.1.11は完全に機能したので、Gemfileのコメントを読み上げて読みました

    gem 'bcrypt', '~> 3.1.11

バンドルのインストールを再度実行しました。これはうまくいきました。

1
Graeme Campbell

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 を参照してください。

1
Arta