Ошибка, указывающая, что «bcrypt-ruby не является частью пакета», как я могу добавить bcrypt-ruby в Gemfile? - PullRequest
12 голосов
/ 19 февраля 2012

Когда я добавляю 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", эта ошибка не появится.

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

Ответы [ 6 ]

23 голосов
/ 23 июля 2012

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

touch tmp/restart.txt
13 голосов
/ 19 февраля 2012

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

Добавление

gem "bcrypt-ruby"

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

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

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

даст вам последнюю версию>= до 3,0,1, но менее 3,1.Вы можете сделать это, если в версии 3.0.1 есть исправление ошибки, от которого вы зависите, и вы рады получить больше исправлений ошибок, но не хотите серьезных изменений.На сайте bundler можно найти больше информации.

6 голосов
/ 19 февраля 2012

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

gem 'bcrypt-ruby'

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

bundle install
2 голосов
/ 16 апреля 2014

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

Оказывается, что даже если я использовал новый bcrypt 3.1.7, он не работал для меня, пока я ТАКЖЕВ файле gemfile был файл bcrypt-ruby 3.0.1.Я сопротивлялся, что когда я должен был просто принять ошибку в ее слове.

gems:

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'

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

1 голос
/ 23 февраля 2014

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

1 голос
/ 09 сентября 2013

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

bundle install, bundle update, bundle install

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...