J'exécute une nouvelle installation de Ruby 2.2.1 sous Windows 8.1 avec DevKit. Après l'installation, j'exécute:
gem install Rails
rails new testapp
cd testapp
Rails server
laissant tout le reste par défaut.
Le processus échoue à la dernière ligne lorsque, au lieu d’exécuter le serveur, j’obtiens le message d’erreur
in 'require': cannot load such file -- 'nokogiri\nokogiri' (LoadError)
Cela se produit à chaque fois et j'ai regardé autour de moi et essayé tout ce que j'ai trouvé pour le réparer, mais rien n'a fonctionné jusqu'à présent.
Quel est le problème ici et comment puis-je obtenir un test simple Rails app au travail?)
Nokogiri ne prend pas encore en charge Ruby 2.2 sous Windows. La prochaine version en sera. Voir https://github.com/sparklemotion/nokogiri/issues/1256
Nokogiri ne prend pas en charge les versions natives (par exemple avec devkit) sous Windows. Au lieu de cela, il fournit des gemmes contenant des DLL prédéfinies.
Il est possible de participer ou de suivre une discussion sur le sujet du support de devkit build ici: https://github.com/sparklemotion/nokogiri/issues/119
Tout d’abord, désinstallez la version de Nokogiri que vous avez actuellement avec:
gem uninstall nokogiri
Télécharger Nokogiri 1.6.6.2 (x64) ou Nokogiri 1.6.6.2 (x86)
Installez cette version localement en utilisant:
gem install --local C:\Users\$user$\Downloads\nokogiri-1.6.6.2-x64-mingw32.gem
ou si vous utilisez Ruby 32bit:
gem install --local C:\Users\$user$\Downloads\nokogiri-1.6.6.2-x86-mingw32.gem
Le chemin peut différer selon l'endroit où vous avez téléchargé le fichier.
Essayez de redémarrer le serveur en utilisant Ruby bin\Rails server
, et ça devrait marcher.
Nokogiri fonctionnait avec Ruby 2.2 sur Windows 10 avec un mélange de Mike Dalessios et Julios qui répondent à la question suivante:
gem uninstall nokogiri
.gem "nokogiri", ">= 1.6.7.rc"
à votre Gemfile.bundle install
.bundle update nokogiri
si bundle a verrouillé Nokogiri à une version.Ruby_dir\lib\Ruby\gems\2.2.0\gems\nokogiri-1.6.6.2\ext\nokogiri
extconf.rb
dir_config('iconv').any? or pkg_config('libiconv')
à #376
MinGW64
& MSYS
depuis MegaPATH
dans Windows (supprimez les références de chemin Devkit
- cela ne fonctionne pas)libxml2
, libxslt
, iconv
bibliothèques (ou ici )Ruby extconf.rb --platform=Ruby --n --use-system-libraries
En référençant les bibliothèques téléchargéesmake
make install
Installation groupée
La première étape consiste à bundle.
Cela mettra la gemme nokogiri
sur votre machine sans exécuter le compilateur pré-packagé (qui ne fonctionne généralement pas sous Windows).
Cela montrera Nokogiri comme installé:
Parcourir
Accédez au dossier nokogiri
pour trouver ext/nokogiri/extconf.rb
:
Ouvrez extconf.rb
... et ajoutez dir_config('iconv').any? or pkg_config('libiconv')
à #376
Nokogiri standard installe "compter" sur l'inclusion libxml2
De iconv
- nous devons le définir explicitement, sinon des erreurs iconv.h is missing
Se produiront.
Ajouter une chaîne d'outils
N'utilisez pas devkit
pour cela - cela ne fonctionne pas.
Vous avez besoin de MinGW
:
J'ai compressé mes dossiers exacts MinGW64
Et MSYS64
sur Mega (clé: !FJtcq25l-QMsNltCxllMhc1IGqORvap8xv8gWxSUbDA
):
Ajouter à PATH
Cela donne accès à gcc
& make
(les deux requis):
Supprimez la référence devkit
de votre chemin et ajoutez ce qui suit:
- MINGW64_PATH/bin
- MSYS64_PATH/bin
Téléchargez les libs
J'ai ajouté les bibliothèques à Mega:
Vous allez les décompresser ici:
Toutes les bibliothèques proviennent de cette source .
Exécuter extconf.rb
Une fois que les bibliothèques sont sur votre système, vous pouvez exécuter Ruby extconf.rb
Pour configurer la construction:
32bit
Ruby extconf.rb --platform=Ruby -N -- --use-system-libraries --with-xml2-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/libxml2-2.9.2-win32-x86 --with-xml2-include=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/libxml2-2.9.2-win32-x86/include/libxml2 --with-iconv-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/iconv-1.14-win32-x86 --with-xslt-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/libxslt-1.1.28-win32-x86
64bit
#64 Ruby extconf.rb --platform=Ruby -N -- --use-system-libraries --with-xml2-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/libxml2-2.9.2-win32-x86_64 --with-xml2-include=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/libxml2-2.9.2-win32-x86_64/include/libxml2 --with-iconv-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/iconv-1.14-win32-x86_64 --with-xslt-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/libxslt-1.1.28-win32-x86_64
make
Cela peut créer des erreurs/des avertissements, tant qu'il est écrit "Error 1 (ignored)
", ça devrait aller.
Ensuite, utilisez make install
:
Ensuite, accédez à votre installation Rails et exécutez Rails s
:
Pour donner un contexte:
Ruby 2.2+ sur Windows ne compile pas les extensions Nokogiri requis.
Les extensions d'une gem sont les dépendances supplémentaires (bibliothèques) qu'il utilise.
Ils sont construits quand vous installez le joyau:
Le manque d'extensions empêche Nokogiri de fonctionner.
Les extensions existent dans le dossier ext
d’une gemme ( vous pouvez en savoir plus ici ):
Mysql2
, RMagick
, PGSQL
, Nokogiri
etc tous utilisez des extensions/bibliothèques.
C'est pourquoi - sous Windows - vous devez utiliser des commutateurs personnalisés (--with-opt-dir
) Lors de l'installation de la gem. Cela donne les répertoires Ruby/le shell/(cmd
)] requis lib
/include
nécessaires à la création des fichiers de la gem (c'est l'équivalent). de comment PATH
fonctionne).
Sur Linux
/Mac
, ces répertoires sont gérés avec les gestionnaires de packages respectifs (brew
/apt-get
). Windows ne l’a pas, vous devez donc installer les extensions manuellement.
Comme Windows ne dispose pas d’un ensemble standard de bibliothèques, vous devez les télécharger vous-même. Vous devez également construire vous-même (ce qui est délicat).
Le correctif pour l’installation de Nokogiri consiste à utiliser les bonnes bibliothèques et à créer des outils pour installer la gemme.
Construire
La différence avec Ruby 2.2+ est que la gemme va "s'installer" sans indiquer d'exception. Vous pensez qu'elle est installée, seulement pour trouver Rails ne charge pas (d'où l'erreur nokogiri/nokogiri.so
).
Cela signifie que vous devez vous assurer que vous avez les fichiers sur votre système et exécuter le compilateur pour les installer.
La documentation ci-dessus devrait vous montrer comment faire cela.