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.
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'
$ bundle update json
$ bundle install
Exécutez cette commande alors tout ira bien
Sudo apt-get install libgmp-dev
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!
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.
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
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.
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.
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
.
bundle update json
. A aidé à passer.
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
Pour OS X, assurez-vous que vous avez coreutils
$ brew install coreutils
$ bundle
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.
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.
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.
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
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'
.
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.
Bundler -v
]). J'avais la version 1.12.5 installéegem install bundler -v '1.11.2'
)Basculer Ruby version de 1.9 à 2.2 avec rvm a fait le travail pour moi