bcrypt LoadError с Rails

У меня возникли проблемы с поиском решения этой проблемы, и я пробовал много исправлений, с которыми сталкивались другие, но безуспешно. Я работаю над учебником Ruby on Rails 5 Майкла Хартла, который требует использования bcrypt для реализации функции has_secure_password. Когда я запускаю тест, я получаю длинное сообщение об ошибке, которое начинается с:

C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.11-x64-mingw32/lib/bcrypt.rb:16:in 'require': cannot load such file -- bcrypt_ext (LoadError)

Я попытался удалить и переустановить bcrypt с добавлением --platform=ruby в конце и включением различных версий в gemfile; gem 'bcrypt', '~> 3.1.7', 'bcrypt', '3.1.11', platforms: [:ruby, :x64_mingw], 'bcrypt', '~> 3.1.7', platforms: [:ruby] включая различные комбинации установки файла gem из командной строки. Оставляя хешированный файл gem во время установки из консоли, удаляя и запуская пакетную установку, используя только ссылку на файл gem.

Это все сообщение об ошибке, которое я получаю при попытке доступа к консоли Rails:

C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.11-x64-mingw32/lib/bcrypt.rb:16:in 'require': cannot load such file -- bcrypt_ext (LoadError)
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.11-x64-mingw32/lib/bcrypt.rb:16:in `rescue in <top (required)>'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.11-x64-mingw32/lib/bcrypt.rb:12:in `<top (required)>'
    from C:/Ruby23-x64/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:81:in `require'
    from C:/Ruby23-x64/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:81:in `block (2 levels) in require'
    from C:/Ruby23-x64/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:76:in `each'
    from C:/Ruby23-x64/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:76:in `block in require'
    from C:/Ruby23-x64/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:65:in `each'
    from C:/Ruby23-x64/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:65:in `require'
    from C:/Ruby23-x64/lib/ruby/site_ruby/2.3.0/bundler.rb:114:in `require'
    from C:/Users/Bill/Documents/Sites/sample_app/config/application.rb:7:in `<top (required)>'
    from C:/Ruby23x64/lib/ruby/gems/2.3.0/gems/railties-.1.4/lib/rails/command/actions.rb:15:in `require'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-5.1.4/lib/rails/command/actions.rb:15:in `require_application_and_environment!'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-5.1.4/lib/rails/commands/console/console_command.rb:96:in `perform'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/thor-0.20.0/lib/thor/command.rb:27:in`run'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-5.1.4/lib/rails/command/base.rb:63:in `perform'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-5.1.4/lib/rails/command.rb:44:in `invoke'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-5.1.4/lib/rails/commands.rb:16:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

Я использую Ruby версии 2.3.3 с Rails версии 5.1.4, работающей в Windows 7x64.

Любое понимание, которое кто-либо может предложить мне в этот момент, будет оценено по достоинству.

ОБНОВИТЬ

Итак, после бесчисленных часов попыток решить проблему с помощью gemfile:

gem 'bcrypt', git: 'https://github.com/codahale/bcrypt-ruby.git', :require => 'bcrypt'

было то, что решило проблему для меня. Это может быть не постоянное решение, но, по крайней мере, оно позволяет мне двигаться вперед!


person BaracudaBill    schedule 27.11.2017    source источник


Ответы (1)


Есть более свежие решения, которые вы, возможно, захотите изучить, но когда несколько месяцев назад у меня возникла эта проблема с Rails 5.0, я использовал принятый ответ из этого вопроса о переполнении стека, и это сработало для меня.

Обновление: Как и было предложено, я добавил полный ответ на случай, если ссылка перестанет работать. Сначала удалите bcrypt

gem uninstall bcrypt-ruby

Затем переустановите

gem install bcrypt --platform=ruby

Затем в вашем Gemfile:

gem 'bcrypt','~>3.1.11' # Or current version
person born2bmild    schedule 28.11.2017
comment
Лучше напишите ответ, а не ссылайтесь на ссылку, чтобы избежать проблемы с неработающими ссылками. - person Satishakumar Awati; 28.11.2017
comment
@Satishakumar Awati - отмечено - person born2bmild; 28.11.2017
comment
Поэтому, хотя я снова смог получить доступ к консоли Rails, сообщение об ошибке сохраняется при настройке нового проекта. Пытался запустить все так же, как было предложено, но безрезультатно. - person BaracudaBill; 30.11.2017
comment
Итак, после поиска по форумам и использования многочисленных рекомендаций - gem 'bcrypt', git: 'github.com/codahale /bcrypt-ruby.git', :require =› 'bcrypt' - в gemfile это то, что наконец сработало - person BaracudaBill; 30.11.2017