web-dev-qa-db-fra.com

Pourquoi bundler n’installe-t-il pas JSON?

Je reçois le message d'erreur suivant lors de la tentative d'exécution de 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.

Il peut être important de noter que ce déploiement fonctionnait, puis mis à niveau vers Ruby 2.1.0 pour supprimer une erreur de codage. J'ai mis à niveau localement ce qui a bien fonctionné. J'ai exécuté rvm install 2.1.0 et rvm use 2.1.0 puis modifié mon fichier .Ruby-version pour refléter cette mise à niveau de Ruby.

La commande bundle install fonctionne localement, mais produit la même erreur ci-dessus lorsque je ssh sur le serveur de destination et que cette commande est exécutée.

Si je lance gem list je peux le voir dans la liste des gemmes.

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

Si j'essaie la solution recommandée gem install json -v '1.8.1' localement et sur le serveur de destination, j'obtiens le résultat suivant:

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

Donc, il semble que la gemme est installée, non? Pourquoi cela arrive-t-il? Comment puis-je résoudre ça? Toute aide serait grandement appréciée.

80
Thomas

Après une demi-journée et presque immédiatement après avoir posé ma question, j'ai trouvé la réponse. Bundler 1.5.0 a un bug où il ne reconnaît pas les gems par défaut comme référencé ici

La solution consistait à mettre à jour le bundler 1.5.1 en utilisant gem install bundler -v '= 1.5.1'

67
Thomas
$ bundle update json
$ bundle install
67
dnvtrn

Exécutez cette commande alors tout ira bien

Sudo apt-get install libgmp-dev
48
Jameel Grand

si vous utilisez MacOS Sierra et que votre version Ruby est 2.4.0.La version Ruby n'est pas compatible avec json 1.8.3.

Vous pouvez essayer d'ajouter cette ligne dans votre Gemfile:

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

Cela fonctionne pour moi!

40
Juice007

Pour résoudre ce problème, lancez simplement:

bundle update

Il mettra à jour la version de votre bundler. Puis lancez:

bundle install

Votre problème va se résoudre. La solution est bien expliquée ici.

26
Rohini Choudhary

J'ai trouvé la solution ici . Il y a un problème avec les versions 1.8.1 et Ruby 2.2.3 de Json. Installez donc la version 1.8.3 de Json.

gem install json -v1.8.3
20
Ajeet Khan

Tu devrais essayer

$ Sudo gem install json -v '1.8.2'

dans mon cas (Ubuntu 14.04), cela ne fonctionnait pas directement et je devais le faire:

$ Sudo apt-get install Ruby-dev

et puis je pourrais installer la gemme et continuer. Avait un autre problème qui a été résolu par:

$ Sudo apt-get install libsqlite3-dev

Espérer aide.

12
Lucas

Si la réponse recommandée n'a pas aidé parce que vous utilisez déjà une version plus récente de bundler. Essayez la solution qui a fonctionné pour moi.

Supprimez tout ce qui se trouve dans votre dossier de fournisseur. Ajouter une ligne à votre gemfile

gem 'json', '1.8.0'

Puis lancez - bundle update json.

Il semble que ce soit un problème avec 1.8.1, donc revenir à 1.8.0 a été décisif pour moi.

7
Adam

J'ai rencontré cette erreur en essayant de faire fonctionner un projet sur ma boîte de développement locale (OSX 10.6), en utilisant Sinatra et Postgresql (via activerecord), en s'exécutant sur un rvm'd Ruby 2.1. J'ai trouvé ma réponse ici: https://github.com/wayneeseguin/rvm/issues/2511

Mon problème exact (après le premier bloc d'entrées de journal):

Je reçois aussi une erreur en essayant de construire des extensions natives pour gems

Le réponse :

rvm réinstaller 2.1.0 --disable-binary

Le explication :

OSX n’a pas de gestionnaire de paquetages et toutes les bibliothèques doivent donc être installées manuellement par l’utilisateur, ce qui rend pratiquement impossible la liaison dynamique du fichier binaire. Comme vous pouvez le constater, le binaire (pseudo) lié statiquement pose des problèmes.

Par souci d’intégralité, j’avais d’abord oublié de mettre à jour rvm (rvm get head), ce qui produisait d’autres erreurs, mais il me fallait quand même le drapeau --disable-binary.

7
Matthias

bundle update json. A aidé à passer.

5
anti-k

Quand j’ai essayé d’installer la gemme Json en utilisant gem install json séparément de l’utilisation de bundle install j’ai ERROR: Failed to build gem native extension., en recherchant ce que j’ai trouvé en utilisant

    apt-get install Ruby-dev

a fait le tour

4
PetrolHead

Pour OS X, assurez-vous que vous avez coreutils

$ brew install coreutils
$ bundle
3
comonitos

Cela semble être un bogue dans Bundler ne reconnaissant pas les gems par défaut installés avec Ruby 2.x. J'ai toujours rencontré le problème, même avec la dernière version de bundler (1.5.3).

Une solution consiste à supprimer simplement json-1.8.1.gemspec du répertoire gemspec par défaut.

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

Après cela, le groupeur ne devrait avoir aucun problème à localiser la gemme. Notez que j'utilise chruby. Si vous utilisez un autre gestionnaire Ruby, vous devrez mettre à jour votre chemin en conséquence.

2
jearlu

Bundle ne parvenait pas à installer json -v '1.8.1' et la suppression de mon fichier Gemfile.lock et l'exécution de bundle ont à nouveau résolu ce problème.

2
davidmccoy

Il me manquait la solution en-têtes C qui consistait à le télécharger pour Xcode, c’est le meilleur moyen.

xcode-select --install

J'espère que ça aide.

2
Haris Krajina

J'ai installé la dernière version de json:

gem install json

Supprimez ensuite la ligne json (1.8.1) du fichier Gemfile.lock et effectuez une

bundle install

Et puis le fichier Gemfile.lock utilise json (1.8.3) sans erreur

1
PerseP

Pour macOS Sierra:

J'ai rencontré cette erreur lorsque j'ai utilisé le projet bundler (v1.15.3) dans Rails (v4.2). La solution pour moi est gem uninstall bundler -v '1.15.3' et gem install bundler -v '1.14.6'.

0
Devin

Pour moi, certaines des réponses mentionnées précédemment ont été utiles du point de vue de la compréhension, mais elles n'ont pas résolu mon problème.

C'est donc ce que j'ai fait pour résoudre le problème.

  • Modification de gemfile.lock pour mettre à jour json (2.0.2) (Antérieurement, c'était 1.8.)
  • Vérifiez la version de Bundler installée (commande Bundler -v]). J'avais la version 1.12.5 installée
  • Installer le bundle version 1.11.2 (en utilisant gem install bundler -v '1.11.2')
  • Puis lancez bundle install
0
iHS

Basculer Ruby version de 1.9 à 2.2 avec rvm a fait le travail pour moi

0
Koala7