Ruby на OS X 10.9 Игнорирование гемов, потому что расширения не собраны

36

Каждые несколько дней это происходит при выполнении различных действий в Ruby CLI (в частности, с использованием knifeутилиты Chef) в OS X (невозможность репликации в других средах; Linux, FreeBSD и т. Д.):

Ignoring bcrypt-3.1.7 because its extensions are not built.  Try: gem pristine bcrypt-3.1.7
Ignoring bigdecimal-1.2.5 because its extensions are not built.  Try: gem pristine bigdecimal-1.2.5
Ignoring ffi-yajl-1.1.0 because its extensions are not built.  Try: gem pristine ffi-yajl-1.1.0
Ignoring gem-wrappers-1.2.5 because its extensions are not built.  Try: gem pristine gem-wrappers-1.2.5
Ignoring gem-wrappers-1.2.4 because its extensions are not built.  Try: gem pristine gem-wrappers-1.2.4
Ignoring pg-0.17.1 because its extensions are not built.  Try: gem pristine pg-0.17.1
Ignoring psych-2.0.6 because its extensions are not built.  Try: gem pristine psych-2.0.6
Ignoring sqlite3-1.3.9 because its extensions are not built.  Try: gem pristine sqlite3-1.3.9

И хотя это простое исправление, оно продолжает происходить. Кто-нибудь сталкивался с этим раньше?

$ ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-darwin11.2.0]
tony_perkis666
источник

Ответы:

5

Я недавно переключился с rvmна chrubyи побежал gem update --system, вот когда проблема начала возникать для меня. После этого, каждый раз, когда я запускал связку, меня убивали с такими же предупреждениями. Все еще не уверен, что вызвало проблему.

Ignoring curb-0.8.6 because its extensions are not built. Try: gem pristine curb-0.8.6

Не уверен, что это исправить, но я сделал 2 вещи, и предупреждение исчезло:

gem uninstall bundler
gem install bundler

gem install curb
lfender6445
источник
Как ни странно, это началось для меня, когда я перешел с Ruby в комплекте с OS X на RVM. Как правило, он очищается сам по себе через несколько дней или если я открываю новый сеанс (что создает трудности, когда это происходит в полдень). Обычно мне приходится переустанавливать все, что я использую в данный момент времени, и обычно это Нож.
tony_perkis666
это происходило с десятками драгоценных камней на моей машине. я думаю, что они просто должны были быть восстановлены
lfender6445
Для себя я должен был удалить каждый драгоценный камень, о котором он предупреждал, а затем переустановить с помощьюbundle install
Ноа Пассалаква
«Я был зарезан» - вау.
B Семь
Что бы я ни пытался получить You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory, эти проблемы начались сами собой, я даже не использую рубин, насколько мне известно. Но я получаю ошибки о расширениях, не созданных для clocale-0.0.3
каждого
62

В моем случае я начинаю видеть эти ошибки после установки rvm

Я решаю такую ​​проблему с: gem pristine --all

skywinder
источник
какая полезная команда
lfender6445
2
Это сработало ... Но я понятия не имею, почему
Hubro
1
удаление пакета и установка не работает. Но этот работал! Благодарность!
Срикант Джива
3
Это должен был быть принятый ответ.
ILikeTurtles
19

Эта проблема возникает, если гем был скомпилирован с другим libruby, как в настоящее время работает. Например, если кто-то использует ruby, расположенный в его домашнем каталоге с chruby, и устанавливает gems в ~ / .gem / ruby, но запускает скрипт, который вызывает / usr / bin / ruby, который повторно использует установленные там гемы. В этом случае gem pristine --allэто не поможет, потому что драгоценные камни могут быть связаны только с одной рубиновой версией.

Mic92
источник
Аааа спасибо Я получал эту ошибку при запуске "rails s". Я переключился на "Bund Exec Rails S", и проблема исчезла.
Джерри
1
это должен быть принятый ответ
Доминик Шрайбер
1
Этот ответ правильный. Если проблема возникает в репозитории Rails, где хранятся гемы vendor/bundle, просто удалите их с помощью rm -rf vendor/bundleи переустановите их с помощью bundle install.
vmarquet
Спасибо. Я пытался, gem pristine --allпока мне не стало
посинело,
2

Это работало для меня на MacOs Sierra:

xcode-select --install
gem install nokogiri

Я уже установил весь xcode до запуска вышеуказанных команд, но мне все равно пришлось это сделать, возможно, потому что первый скрипт обновляет некоторые внутренние библиотеки / зависимости.

Джавад Садекзаде
источник
Это то, что я искал для решения MacOS Sierra. Спасибо
Сакарес
1

Убедитесь, что вы используете "gem pristine --all" для правильной версии ruby. Если вызывается / usr / bin / ruby ​​... используйте "/ usr / bin / gem pristine --all". Это не очевидно, если вы используете rvm и у вас установлено 10 версий ruby.

Это исправило мою проблему на один день, а потом вернулось.

То, что кажется более постоянным решением, это сделать «rvm reset», чтобы по умолчанию был установлен ruby ​​с установленными версиями OSX / usr / bin / ruby ​​и / usr / bin / gem. Если я хочу использовать более новую версию ruby ​​для проекта, я использую .ruby-version и .ruby-gemset в корневом каталоге проекта, чтобы явно установить версию ruby, которую я хочу использовать. Не идеально ... но это должно исправить эту ошибку.

neuronsong
источник
0

В моем случае:

rvm get stable

sudo gem pristine --all

skozz
источник
0

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

Mic92 и Gerry поставили меня на правильный путь: я использовал, rails sчто может привести к ошибкам, потому что он использует версию rails, которая может отличаться от версии проекта.

Я пытался связаться с bin/rails server, я получил другую ошибку (пропущенные драгоценные камни), поэтому я побежалbundle install

В этот момент я получил третью ошибку («несовместимая версия библиотеки»), которая spring stopвылечила.

Потом я rails generate controllerснова побежал , весна перезапустилась и все заработало (я немного заплакала).

mrtnmgs
источник