bcrypt LoadError:无法加载此类文件

Joe*_*ano 28 ruby load ruby-on-rails bcrypt ruby-on-rails-4

我正在尝试为我的Rails应用程序设置登录功能,当我按下登录按钮时,我收到一条bcrypt错误消息:

LoadError in SessionsController#create
cannot load such file -- bcrypt
Run Code Online (Sandbox Code Playgroud)

是否有其他人收到此错误?我有最新版本的bcrypt,我正在按照教程告诉我的做法.

用户模型:我在所谓的错误行周围放了星号.

class User < ActiveRecord::Base
  ****has_secure_password****
end
Run Code Online (Sandbox Code Playgroud)

会话控制器:

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
Run Code Online (Sandbox Code Playgroud)

ApplicationController中:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  include SessionsHelper
end
Run Code Online (Sandbox Code Playgroud)

SessionsHelper:

module SessionsHelper

  def log_in(user)
    session[:user_id] = user.id
  end
end
Run Code Online (Sandbox Code Playgroud)

的Gemfile:

gem 'bcrypt', '~> 3.1.7'
Run Code Online (Sandbox Code Playgroud)

会话/新视图:

<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>
Run Code Online (Sandbox Code Playgroud)

Bru*_*ino 70

如果您已运行: bundle install 要安装bcrypt,只需重新启动rails服务器即可.它对我有用.


小智 11

确保你不仅运行bundle install,而且还要杀死服务器并重新加载它以确保它然后加载到新的gem中.你也可以检查你的宝石文件'spring'.如果那些也加载了,你会想要评论出来,然后重新加载服务器并尝试它.应该照顾所有可能性.