Подтвердить что ты не робот

Ошибка, заявляющая, что "bcrypt-ruby не является частью пакета", как я могу добавить bcrypt-ruby в Gemfile?

Когда я добавляю has_secure_password к модели (унаследованной от ActiveRecord:: Base), возникает ошибка, указывающая, что "bcrypt-ruby не является частью пакета".

Здесь журнал:

Started GET "/users" for 127.0.0.1 at 2012-02-19 16:37:12 +0900

Gem::LoadError (bcrypt-ruby is not part of the bundle. Add it to Gemfile.):
app/models/user.rb:3:in `<class:User>'
app/models/user.rb:1:in `<top (required)>'
app/controllers/users_controller.rb:1:in `<top (required)>'

Я установил bcrypt-ruby на

$ gem install bcrypt-ruby
Building native extensions.   This could take a while...
1 gem installed
Installing YARD (yri) index for bcrypt-ruby-3.0.1...
Installing RDoc documentation for bcrypt-ruby-3.0.1...

но не помогло.

Я пробовал

$ bundle exec rails server

но не помогло.

Если я прокомментирую строку "has_secure_password", эта ошибка не появляется.

Как я могу решить эту проблему?

4b9b3361

Ответ 1

Как говорится в сообщении, вам нужно добавить bcrypt-ruby в свой Gemfile (в корне проекта).

Добавление

gem "bcrypt-ruby"

а затем запуск bundle install должен выполнить трюк (это приведет к извлечению драгоценного камня, если вы еще не установили его).

Вы можете указать конкретные версии, например

gem "bcrypt-ruby", "~> 3.0.1"

вы получите последнюю версию с = = 3.0.1, но не более 3.1. Вы можете сделать это, если 3.0.1 имеет исправление ошибок, от которого вы зависите, и вы счастливы получить больше исправлений ошибок, но вы не хотите серьезных изменений. Там размещается дополнительная информация на веб-сайте bundler.

Ответ 2

Я уже имел gem 'bcrypt-ruby', '~> 3.0.0' в Gemfile и уже выполнил команду bundle, и все же я получил это сообщение. Проблема заключалась в том, что я забыл перезагрузить сервер:

touch tmp/restart.txt

Ответ 3

В Gemfile добавьте строку

gem 'bcrypt-ruby'

а затем из командной строки

bundle install

Ответ 4

Что-то, что пришло мне в голову, пока не рассматривается. Я получил эту ошибку после перехода на новую систему, на которой я установил Ruby 2.0.x.

Оказывается, даже если я использовал новый bcrypt 3.1.7, это не сработало для меня, пока у меня также не было bcrypt-ruby 3.0.1 в gemfile. Я сопротивлялся этому, когда я должен был просто принять ошибку в этом слове.

драгоценные камни:

bcrypt (3.1.7 ruby x86-mingw32)
bcrypt-ruby (3.0.1 x86-mingw32, 3.0.0)

Gemfile:

gem 'bcrypt-ruby', '~> 3.0.1'
gem 'bcrypt', '~> 3.1.7'

Перед добавлением обоих я пробовал всевозможные комбинации одной версии.

Ответ 5

Перезагрузите сервер и переустановите пакет в правильном порядке, то есть:

bundle install, bundle update, bundle install

а затем перезапустите сервер.

Ответ 6

Если вы уже поместили драгоценный камень в файл gem и установили пакет, и вы все равно получаете сообщение об ошибке, перезапустите сервер.