rails test에서 발생하는 LoadError (cannot load such file - bcrypt) 해결하기 (Rails 튜토리얼 6 장)

자신이 rails 튜토리얼을 진행해 나가면서 발생한 에러를 기록해 갑니다.
하드는 MacBook Air, 개발 환경은 VScode를 사용하고 있습니다.

Rails 자습서 6장 6.3 보안 비밀번호 추가



LoadError (cannot load such file - bcrypt) 오류가 발생할 때까지의 개요



add_password_digest_to_users라는 마이그레이션 파일을 생성하고 데이터베이스에서 마이그레이션을 수행합니다.
$ rails generate migration add_password_digest_to_users password_digest:string
$ rails db:migrate

Gemfile에 bcrypt를 작성하고 $bundle install을 실행합니다.

Gemfile
gem 'rails',          '5.1.6'
gem 'bcrypt',         '3.1.12'
$ bundle install

그런 다음 사용자 모델에 has_secure_password를 추가합니다.

app/models/user.rb
class User < ApplicationRecord
  ~省略~
  has_secure_password
end

여기에서
$ rails test

를 실행하면 has_secure_password 에 의해 추가되는 검증에 의해 에러가 발생해야 합니다.

그러나 다음과 같은 오류가 발생했습니다.


$ rails test
LoadError: cannot load such file -- bcrypt
〜省略〜

시도하고 rails console을하고 User.new를 실행하면,,
$ rails console

Running via Spring preloader in process 18909
Loading development environment (Rails 5.1.7)

WARNING: This version of ruby is included in macOS for compatibility with legacy software. 
In future versions of macOS the ruby runtime will not be available by 
default, and may require you to install an additional package.

>User.new
You don't have bcrypt installed in your application. Please add it to your Gemfile and run bundle install
Traceback (most recent call last):
        3: from (irb):1
        2: from app/models/user.rb:1:in `<top (required)>'
        1: from app/models/user.rb:10:in `<class:User>'
LoadError (cannot load such file -- bcrypt)

설치해야 할 bcrypt가 전혀로드되지 않습니다 ...... (울음)

【Rails】bcrypt 설치시의 "cannot load such file -- bcrypt_ext" 에러 대응 【Windows】

이 해결책이 제일 그랬지만, 아직도 전혀 해결하지 않는다,,,, 라고 하는 상황의 사람은, 다음의 해결책을 시험해 보세요.

해결 방법 Ruby 업데이트



첫째,
$ rbenv versions

에서 ruby ​​버전을 확인합니다.
그런 다음 그 루비를 uninstallsimasu
$ rbenv uninstall 確認したバージョン

그런 다음 새 버전을 지정하여 설치합니다. (여기에서는 2.6.5)
$ rbenv install 2.6.5

설치가 완료되면 다음을 수행합니다.
$ rbenv global 2.6.5
$ rbenv rehash

이제 루비 버전이 변경되어야합니다. ($ ruby ​​-v에서 확인할 수 있음)

참고 : rbenv의 사용법과 구조에 대하여

마지막으로 Gemfile의 내용을 변경하고 확인합니다.
source 'https://rubygems.org'

ruby '2.6.5'  ←追記
gem 'bcrypt' ←バージョンも指定しなくて良い(bcrypt-rubyとかもmacOSならいらない)

▲ 여기에서는 루비 버전을 지정하고 bcrypt를 버전 지정없이 최신 버전을 설치할 수 있도록 작성합니다.

$ gem list bcrypt
실행하고 bcrypt가 있으면,
$ gem uninstall bcrypt)
를 실행하여 삭제합니다.

bundle install을하고 bcrypt를 설치하십시오.
$ bundle install

그러면 $ rails console을 실행할 때 WARNING이 제거되고 안전 오류가 해결됩니다.

도움이 되면 꼭 LGTM 버튼을 확실히 눌러 주시면 기쁩니다.
함께 Rails 학습 노력하자!

좋은 웹페이지 즐겨찾기