cannot load such file — bcrypt_ext

레일즈에서 bcrypt를 이용하려고 하는데 터진 문제다.

지금 개발중인 레일즈 환경이 ruby 2.4.2, rails 5.1.6, windows OS 환경이다. 근데 사용자 관련 기능을 넣고 암호 저장으로 저걸 쓰려고 하는데 오류가 난다.

아마 검색해보면 죄다 윈도우 환경에서 안된다고 나온다. (ㅅㅂ…)

게다가 버전도 아예 정해져 있다. 3.1.11…. 아오 썅..!

이거 해결책이 골때린다. 그래서 내가 이건 아예 블로그로 남기려고 한다.

  • gem을 다시 설치한다.

신기하게도 이게 스택 오버플로우랑 레일즈 포럼에서 제일 인기 많은 방법이다.

윈도우의 루비와 레일즈 환경에서 동작시키면 이게 x64_mingw 환경에 맞춰서 바이너리가 생성된다. 루비와 레일즈의 devkit 설치가 msys, mingw 기반으로 되어 있기 때문에 몇몇 바이너리가 대놓고 이렇게 되어 있다. 이런 경우에는 루비 플랫폼 환경에서 쉽게 끌어다가 쓸 수 있도록 해주면 된다.

gem uninstall bcrypt 명령어로 지우는데, 여러 버전이 설치되어 있으면 그대로 전부 다 지워준다.

그 다음에 설치를 다시 하는데 다음과 같은 명령어로 설치를 한다.

gem install bcrypt –platform=ruby

이렇게 설치하면 설치된 gem 번들 뒤에 x64_mingw 가 붙어있지 않는 버전이 설치된다.

그 다음에 레일즈에서도 Gemfile에 추가한 번들이 있을 것이다. 그것 뒤에 플랫폼 지정을 적어준다.

gem ‘bcrypt’, ‘~> 3.1.7’, platforms: [:ruby]

혹시 모르니 x64_mingw를 그대로 쓰고 싶은 분들은 플랫폼을 이렇게 바꿔준다.

platforms: [:ruby, x64_mingw]

앞에 루비를 지워도 되는데 어차피 어느 환경이던 다 쓸 수 있도록 복수 환경을 지원한다고 해도 별 지장은 없다.

  • 환경을 옮긴다.

이래도 오류가 나는 사람들 많다. 진짜로… 다른 해결법이 있으면 좋겠는데, 정 방법이 없다면 아예 개발 환경을 옮겨봐라. 일단 규링이 해본 봐로는 리눅스 환경에서는 100% 문제 없이 된다.

윈도우 10을 이용하는 사용자라면 마이크로소프트 스토어에 있는 우분투를 설치 후 그곳에다가 환경을 만들어서 이용하는 것도 좋은 방법이다. 그 내부의 경로로 들어가는 방법은 별도의 블로그 글을 작성하도록 하겠다.

리눅스 서버를 자체 운영하거나 도커 환경에서 만들어서 이용하고자 한다면 그 방법도 좋은 방법일 수 있겠다. 단, 개발이 좀 번거롭긴 하겠다만… 일단 오류는 없다.

……

어이가 없다. 진짜….

또 다른 해결 방법이 있다면 꼭 블로그로 내용 남기도록 하겠다.

“cannot load such file — bcrypt_ext”의 한가지 생각

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다