Чому пакет не встановлює камінь JSON?


82

Я отримую таку помилку під час спроби запуску cap production deploy.

DEBUG [dc362284]    Bundler::GemNotFound: Could not find json-1.8.1.gem for installation
DEBUG [dc362284]    An error occurred while installing json (1.8.1), and Bundler cannot continue.
DEBUG [dc362284]    Make sure that `gem install json -v '1.8.1'` succeeds before bundling.

Можливо, важливо зазначити, що це розгортання працювало, ніж я перейшов на Ruby 2.1.0, щоб видалити помилку кодування. Я модернізував локально, що працювало нормально. Я запустив, rvm install 2.1.0а rvm use 2.1.0потім змінив .ruby-versionфайл, щоб відобразити це оновлення Ruby.

bundle installКоманда працює локально, але призводить до того ж вище помилки , коли я SSH на сервер призначення і запустіть цю команду.

Якщо я побіжу, gem listя побачу це у списку дорогоцінних каменів.

...
jquery-rails (3.0.4)
json (1.8.1)
less (2.3.2)
...

Якщо я спробую рекомендоване рішення gem install json -v '1.8.1'локально та на цільовому сервері, я отримаю такий результат:

Building native extensions.  This could take a while...
Successfully installed json-1.8.1
Parsing documentation for json-1.8.1
Done installing documentation for json after 0 seconds
1 gem installed

Отже, схоже, самоцвіт встановлено, так? Чому це відбувається? Як я можу це вирішити? Будь-яка допомога буде вдячна.


Що bundle show jsonдає вам?
user2503775

Додати gem json, '1.8.1'до Gemfile
user2503775

У мене є gem json, '1.8.1' у моєму gemfile вже, на жаль
Томас

пакетний показ json give /Users/ME/.rvm/rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/gems/json-1.8.1
Томас

6
Мені потрібно було sudo apt-get install ruby-devна моєму Ubuntu.
e9t

Відповіді:


74
$ bundle update json
$ bundle install

2
Це зробило це для мене на Ruby 2.4.0!
Вітряк

Працює і для rbenv ruby ​​2.4.1 (debian / ubuntu)
Олексій Дерягін

Це спрацювало і на мене. Рубін 2.4.0 High Sierra. Дякую!
Robert_T_Taylor

Працював у мене теж під версією Ruby 2.4.2p198. Дякую.
fatihturan

Я підтримав цю відповідь, оскільки вона спрацювала для мене, тоді як прийнята відповідь ні. Як і @Robert_T_Taylor, я запускав це на macOS High Sierra.
Скотт Лоуренс,

68

Тож після півдня на цьому і майже відразу після розміщення мого запитання я знайшов відповідь. У Bundler 1.5.0 є помилка, в якій він не розпізнає дорогоцінні камені за замовчуванням, про які йдеться тут

Рішенням було оновлення до пакету 1.5.1 за допомогою gem install bundler -v '= 1.5.1'


10
Була та сама проблема навіть після оновлення пакета, і gem install json -v '1.8.1'після оновлення виправлено повідомлення про помилку для мене.
Джейсон Денні,

5
gem install json -v '1.8.1'за ним пішов bundle packageтрюк для мене
Обі

Врятував мене кілька лайливих слів. Дякую за це!
Сом

1
Хіба постачальник не повинен встановлювати ці дорогоцінні камені для вас? Я не розумію, чому вам доведеться встановлювати дорогоцінні камені вручну. bundler.io/rationale.html Я використовую Bundler версії 1.7.11
Snowcrash

2
Я використовую пакетний пакет версії 1.14.6, а також отримую цю помилку
Catfish


41

якщо ви перебуваєте в MacOS Sierra і ваша версія ruby ​​становить 2.4.0. Рубінова версія не сумісна з json 1.8.3.

Ви можете спробувати додати цей рядок у свій Gemfile:

gem 'json', github: 'flori/json', branch: 'v1.8'

Це працює для мене!


Дякую, це врятувало мені багато розчарувань!
Ешелон

33

Щоб вирішити цю проблему, просто запустіть:

bundle update

Він оновить версію вашого пакета. Потім запустіть:

bundle install

Ваша проблема буде вирішена. Рішення добре пояснено тут .


1
+1 Дуже корисно, і я відклеївся. Після bundle updateвстановлення спрацювало чудово. Дякуємо за чисте рішення.
twknab

3
bundle updateоновить всі ваші дорогоцінні камені. gem update bundlerоновить пакет.
eebbesen

20

Я знайшов рішення тут . Проблема з json версії 1.8.1 та ruby ​​2.2.3, тому встановіть json 1.8.3 версію.

gem install json -v1.8.3

1
Це фантастично спрацювало для мене на OSX, Ubuntu у декількох поганих версіях json gem. В одному випадку мені довелося видалити файл блокування та відновити з нуля: git rm Gemfile.lock bundle install
fuzzygroup

2
Працював нормально, насамперед я видаляю, Gemfile.lockа потім просто запускаю bundle installі все.
alexventuraio,

12

Вам слід спробувати

$ sudo gem install json -v '1.8.2'

у моєму випадку (Ubuntu 14.04) це не працювало безпосередньо, і мені довелося зробити це:

$ sudo apt-get install ruby-dev

а потім я міг би встановити самоцвіт і продовжити. Була ще одна проблема, яку було вирішено:

$ sudo apt-get install libsqlite3-dev

Сподіваючись допомагає.


9

Якщо рекомендована відповідь не допомогла, оскільки ви вже використовуєте новішу версію пакета. Спробуйте рішення, яке мені підходило.

Видаліть усе, що знаходиться в папці постачальника. Додайте рядок до вашого gemfile

gem 'json', '1.8.0'

Тоді біжи - bundle update json.

Здається, це проблема з 1.8.1, тому повернення до 1.8.0 зробило для мене фокус.


Працював під час оновлення з ruby ​​2.0.0 до 2.2.4.
Лубот

1
Не потрібно все видаляти. "пакета оновлення json" вистачало.
Джоффрі Баратеон,

1
Використання gem 'json', '1.8.6'працювало у мене. Можливо, ви захочете спробувати це.
etagwerker

7

Я зіткнувся з цією помилкою, намагаючись отримати проект для запуску на моєму локальному вікні розробника (OSX 10.6), використовуючи Sinatra та Postgresql (через activerecord), що працює на rvm'd ruby ​​2.1. Я знайшов свою відповідь тут: https://github.com/wayneeseguin/rvm/issues/2511

Моя точна проблема (після першого блоку записів журналу):

Я також отримую помилку під час спроби побудувати власні розширення для самоцвітів

відповідь :

rvm reinstall 2.1.0 --disable-binary

пояснення :

OSX не має диспетчера пакетів, тому всі бібліотеки повинні встановлюватися користувачем вручну, це практично робить неможливим динамічне зв’язування двійкового файлу, і, як ви можете бачити, є проблеми з (псевдо) статично зв’язаним двійковим файлом.

Для повноти спочатку я забув оновити rvm ( rvm get head), що дало деякі інші помилки, але все-таки потрібен був --disable-binaryпрапор, як тільки я це зробив.


Отримайте таку помилку з вашим рішенням: "Версія '2.1.0' неоднозначна. Не вдається вибрати реалізацію / версію Ruby, будь ласка, будьте більш конкретні. Не вдається переінсталювати невідомий пакет ''"
Holyredbeard

Можливо, у вас не встановлено ruby ​​2.1.0 або більше однієї версії, встановленої через rvm. Запустіть rvm list, і ви побачите, яка ваша поточна версія. Використовуйте повний рядок (наприклад, ruby-2.0.0-p451) замість 2.1.0згаданого вище.
Маттіас,


5

Коли я намагався встановити json gem, використовуючи gem install jsonокремо від простого використання, bundle installя отримав ERROR: Failed to build gem native extension., шукаючи, що я знайшов, що використовую

    apt-get install ruby-dev

зробив фокус


дивно - ти врятував мій день!
Ункас

3

Для OS X переконайтеся, що у вас є coreutils

$ brew install coreutils
$ bundle

1
Хоча я отримав попередження "Попередження: coreutils 8.32 вже встановлено та оновлено", це зробило трюк.
Пол Версхур,

2

Здається, це помилка в Bundler, яка не розпізнає дорогоцінні камені за замовчуванням, встановлені разом з ruby ​​2.x. Я все ще відчував проблему навіть з останньою версією пакету (1.5.3).

Одне з рішень - просто видалити json-1.8.1.gemspec із каталогу gemspec за замовчуванням.

rm ~/.rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/specifications/default/json-1.8.1.gemspec

Після цього у пакувальника не повинно виникнути проблем з пошуком самоцвіту. Зверніть увагу, що я використовую chruby. Якщо ви використовуєте якийсь інший менеджер рубінів, вам доведеться відповідно оновити свій шлях.


так, просто вирішити проблему з набором json. Дякую
hainguyen

2

Мені бракувало рішення заголовків C, щоб завантажити його для Xcode, це найкращий спосіб.

xcode-select --install

Сподіваюся, це допоможе.


2

Bundle не вдалося встановити json -v '1.8.1', і видалення мого Gemfile.lock та запущений пакет знову вирішили цю проблему для мене.


1

Я встановив останню версію json:

gem install json

Потім видалив рядок json (1.8.1) з Gemfile.lock і зробив a

bundle install

І тоді файл Gemfile.lock використовує json (1.8.3) без помилок


1
Просто запуск пакетного оновлення вирішив цю проблему для мене ... іншими словами, використовуючи нову збірку JSON gem.
Френсіс Маллок


0

Для мене деякі згадані раніше відповіді були корисними з точки зору розуміння, але це не вирішило мою проблему.

Отже, це те, що я зробив для вирішення проблеми.

  • Змінено gemfile.lock для оновлення json (2.0.2) ( раніше це було 1.8.3 )
  • Перевірте встановлену версію Bundler ( Bundler -vкоманда). У мене була встановлена ​​версія 1.12.5
  • Встановіть пакетний пакет версії 1.11.2 (використовуючи gem install bundler -v '1.11.2' )
  • Потім запустіть bundle install

0

Для macOS Sierra:

Я зіткнувся з цією помилкою, коли використовував bundler ( v1.15.3) у v4.2проекті Rails ( ). Рішенням для мене є gem uninstall bundler -v '1.15.3'і gem install bundler -v '1.14.6'.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.