Почему bcrypt ruby ​​gem не устанавливается должным образом?

Я пытаюсь включить bcrypt-ruby, v. 3.0.1. Я ввожу драгоценный камень в свой файл драгоценного камня следующим образом:

gem 'bcrypt-ruby', '3.0.1'

Затем я иду к терминалу и запускаю:

bundle install

Я получаю следующий ответ:

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-1.9.3-p392/bin/ruby extconf.rb 
creating Makefile

make
compiling bcrypt_ext.c
make: gcc-4.2: No such file or directory
make: *** [bcrypt_ext.o] Error 1


Gem files will remain installed in /Users/philip7899/.bundler/tmp/2186/gems/bcrypt-ruby-3.0.1 for inspection.
Results logged to /Users/philip7899/.bundler/tmp/2186/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out
An error occurred while installing bcrypt-ruby (3.0.1), and Bundler cannot continue.
Make sure that `gem install bcrypt-ruby -v '3.0.1'` succeeds before bundling.

Я очень новичок в Ruby и Rails и понятия не имею, как это исправить. Я видел другие страницы stackoverflow с похожими вопросами, но никто не смог мне помочь. Недавно я обновился до Mountain Lion, и мне сказали, что это может быть проблемой. Мне сказали использовать RVM для удаления и переустановки Ruby. Я пробовал это, и это не сработало.

Пожалуйста помоги. Спасибо.


person Philip7899    schedule 23.09.2013    source источник
comment
Не могли бы вы включить содержимое /Users/philip7899/.bundler/tmp/2186/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out?   -  person Tim Moore    schedule 24.09.2013


Ответы (9)


Попробуйте удалить ,'3.0.1' или попробуйте так gem "bcrypt", "~> 3.1.1"

Надеюсь, поможет.

Если нет, из консоли попробуйте запустить gem install bcrypt

person Yaro    schedule 23.09.2013
comment
Тогда я просто могу перенаправить вас здесь. - person Yaro; 24.09.2013
comment
Сочетание вашего ответа и ссылки, которую вы мне прислали (которую я пробовал раньше), сработало! Спасибо! - person Philip7899; 24.09.2013
comment
Похоже, bcrypt-ruby был переименован в bcrypt: github.com/codahale/bcrypt -ruby#how-to-install-bcrypt. Итак: gem "bcrypt", "~> 3.1.1". - person Adobe; 21.01.2016
comment
@Adobe Спасибо! Обновлен ответ - person Yaro; 21.01.2016

В последних версиях bcrypt-ruby, похоже, используется библиотека GMP.

Итак, в Linux должно помочь что-то вроде этого (команда для Ubuntu 14.04):

sudo aptitude install libgmp-dev
person Envek    schedule 28.12.2015
comment
Спасибо @Envek, вы сэкономили мне много времени. - person Jigar Bhatt; 09.03.2016

На самом деле простой:

gem install bundler
gem install bcrypt-ruby

а потом:

bundle update bcrypt-ruby
or bundle update bcrypt

Сделал бы трюк.

Это почти так же, как вы бы обновили рельсы. Если вы хотите убедиться, что вы также можете указать последнюю версию bcrypt-ruby в вашем Gemfile. Я только что сделал это десять минут назад, поэтому я знаю, что это работает на дату этого поста... Я использовал ruby ​​1.9.3 p484.

person mystic cola    schedule 26.12.2013
comment
gem install bundler работал на меня. Спасибо! @мистика-кола - person Zakaria; 20.01.2017

Я думаю, что это проблема обновления xcode.

Мое решение:

brew install apple-gcc42
sudo ln -s /usr/local/bin/gcc-4.2 /usr/bin/gcc-4.2

и это работает

person big-circle    schedule 05.11.2013

Мне удалось исправить мою проблему с установкой драгоценного камня Bcrypt 3.1.11, который не работал с:

linking shared-object bcrypt_ext.bundle
ld: library not found for -lgmp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [bcrypt_ext.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/adrian/.rvm/gems/ruby-2.1.6/gems/bcrypt-3.1.11 for inspection.
Results logged to /Users/adrian/.rvm/gems/ruby-2.1.6/extensions/x86_64-darwin-14/2.1.0/bcrypt-3.1.11/gem_make.out

Проблема заключалась в том, что libgmp не был найден. Сначала установите его через brew:

brew install gmp

Затем убедитесь, что gcc найдет библиотеки, установив переменную среды LIBRARY_PATH:

export LIBRARY_PATH=/usr/local/lib

И установите:

gem install bcrypt
person AdrianCooney    schedule 07.05.2016
comment
Я пробовал так много вещей, чтобы добиться успеха. Экспорт пути к библиотеке решил эту проблему для меня. Спасибо! - person BananaNeil; 19.01.2017

Вам нужно будет запустить следующую команду в Ubuntu/Debian:

sudo apt install ruby-dev
person Silviu    schedule 14.06.2019

  1. добавить нужный гем в Gemfile
  2. добавьте эту строку в свой файл конфигурации, если в удаленном пути для установки пакета есть пробелы: .bundle\config:

BUNDLE_LOCAL__BCRYPT: C:\RailsInstaller\Ruby2.1.0\lib\ruby\gems\2.1.0\gems\bcrypt-3.1.10\lib

  1. запустить пакетную установку
person Shivangi Srivastava    schedule 08.09.2015

Это простое решение, которое сработало для меня:

Проверено на Mac:

Убедитесь, что gem 'bcrypt', '3.1.11' находится в вашем gemfile, затем запустите xcode-select --install. Беги bundle install

Вот и все.

удачи

person Wilson    schedule 13.12.2017

Gems с расширениями, написанными на C, такими как bcrypt, не всегда будут компилироваться на разных платформах/версиях ruby. Вы можете найти чистую рубиновую альтернативу bcrypt и вообще избежать возможных проблем с расширениями C. Вы также можете попробовать другую версию драгоценного камня и посмотреть, скомпилируется ли он в вашей системе.

person Andrew Prentice    schedule 23.09.2013
comment
Спасибо, мне нужно использовать эту версию, потому что учебник, который у меня есть (огромная книга, которую я на полпути), использует это, и я недостаточно продвинут, чтобы уйти от книги. - person Philip7899; 24.09.2013
comment
Какую ОС вы используете? У меня были лучшие результаты для расширений C, использующих MRI в Unix-подобной ОС. - person Andrew Prentice; 24.09.2013
comment
Я использую OS X Mountain Lion - person Philip7899; 24.09.2013