ruby on rails bcrypt LoadError: ऐसी फ़ाइल लोड नहीं कर सकता




ruby-on-rails ruby-on-rails-4 (4)

मैं अपने रेल ऐप के लिए एक लॉगिन फ़ंक्शन सेट अप करने का प्रयास कर रहा हूं, जब मैं लॉगिन बटन दबाता हूं तो मुझे एक 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>

सुनिश्चित करें कि आप न केवल बंडल इंस्टॉल चलाएं, बल्कि यह भी कि आप सर्वर को भी मार दें और यह सुनिश्चित करने के लिए इसे फिर से लोड करें कि यह नए रत्नों में लोड हो जाए। आप 'वसंत' के लिए अपने रत्न की जांच भी कर सकते हैं। अगर वह भी लोड हो जाता है, तो आप इसे टिप्पणी करना चाहेंगे, सर्वर को पुनः लोड करें और फिर कोशिश करें। कि सभी संभावनाओं का ख्याल रखना चाहिए।


मेरे पास एक ही समस्या थी, लेकिन जब तक मैंने Gemfile फ़ाइल संपादित नहीं की, और लाइन को असम्बद्ध नहीं किया, तब तक इसे हल नहीं किया जा सका

    gem 'bcrypt', '~> 3.1.7' 

मैंने शुरुआत में संस्करण 3.1.7 स्थापित किया क्योंकि मुझे चिंता थी कि अगर इस समस्या के किसी अन्य समाधान में मैंने जो कुछ पढ़ा है, उसके आधार पर बाद के संस्करणों के साथ संगतता समस्याएं हो सकती हैं, लेकिन 3.1.7 अन्य त्रुटि संदेश के साथ भी असफल रहा। हालांकि, 3.1.11 पूरी तरह से काम किया, और इसलिए मैंने पढ़ने के लिए जेमफाइल में टिप्पणी को बढ़ा दिया

    gem 'bcrypt', '~> 3.1.11

और फिर से स्थापित बंडल भाग गया। यह काम किया।


यदि आपने चलाया है: bundle install लिए bundle install करें, बस रेल सर्वर को पुनरारंभ करें। यह मेरे लिए काम किया।


वसंत प्रक्रिया को मारना और पुनरारंभ करना गार्ड ने मेरे लिए इस मुद्दे को हल किया:

$ ps aux | grep spring

चार वसंत प्रक्रियाओं को वापस कर दिया:

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 
...
...

मारो (एक करके एक):

$ kill -15 11526
$ kill -15 11529
$ kill ... 
$ kill ...

और पुनरारंभ करें:

$ bundle exec guard

एक अच्छी व्याख्या के लिए माइकल हार्टल के रेल ट्यूटोरियल https://www.railstutorial.org/book/static_pages#aside-processes





bcrypt