‘require’: imansible caricare tale file – ‘nokogiri \ nokogiri’ (LoadError) durante l’esecuzione di `rails server`

Sto eseguendo un’installazione pulita di Ruby 2.2.1 su Windows 8.1 con DevKit. Dopo l’installazione eseguo:

gem install rails rails new testapp cd testapp rails server 

lasciando tutto il resto al default.

Il processo non riesce nell’ultima riga quando, invece di eseguire il server, viene visualizzato il messaggio di errore

 in 'require': cannot load such file -- 'nokogiri\nokogiri' (LoadError) 

Succede ogni volta e mi sono guardato intorno e ho provato tutto quello che ho trovato per sistemarlo, ma finora non ha funzionato nulla.

Qual è il problema qui e in che modo posso far funzionare una semplice app per i test di Rails?

Nokogiri non supporta ancora Ruby 2.2 su Windows. La prossima versione lo farà. Vedi https://github.com/sparklemotion/nokogiri/issues/1256

Nokogiri non supporta le versioni native (ad esempio con devkit) su Windows. Invece fornisce gemme contenenti DLL pre-compilate.

C’è una discussione su cui potresti voler unirti o guardarti sull’argomento del supporto per lo sviluppo di devkit qui: https://github.com/sparklemotion/nokogiri/issues/1190

  1. Innanzitutto, disinstalla la versione di Nokogiri che hai attualmente con:

     gem uninstall nokogiri 
  2. Scarica Nokogiri 1.6.6.2 (x64) o Nokogiri 1.6.6.2 (x86)

  3. Installa questa versione localmente usando:

     gem install --local C:\Users\$user$\Downloads\nokogiri-1.6.6.2-x64-mingw32.gem 

    o se stai usando Ruby a 32 bit:

     gem install --local C:\Users\$user$\Downloads\nokogiri-1.6.6.2-x86-mingw32.gem 

    Il percorso potrebbe essere diverso a seconda di dove hai scaricato il file.

Prova ad avviare nuovamente il server usando il server ruby bin\rails server e dovrebbe funzionare.

Ho ottenuto Nokogiri in esecuzione con Ruby 2.2 su Windows 10 con un mix di Mike Dalessios e Julios:

  1. Cerca l’ultima versione di Nokogiri nel repository github di Nokogiri .
  2. Esegui gem uninstall nokogiri .
  3. Aggiungi gem "nokogiri", ">= 1.6.7.rc" al tuo Gemfile.
  4. Esegui bundle install .
  5. Esegui il bundle update nokogiri se bundle ha bloccato Nokogiri in alcune versioni.

inserisci la descrizione dell'immagine qui

fissare

  1. Bundle install (ottiene i file Nokogiri)
  2. Passare a ruby_dir\lib\ruby\gems\2.2.0\gems\nokogiri-1.6.6.2\ext\nokogiri
  3. Apri extconf.rb
  4. Aggiungi dir_config('iconv').any? or pkg_config('libiconv') dir_config('iconv').any? or pkg_config('libiconv') in #376
  5. Scarica le cartelle MinGW64 e MSYS da Mega
  6. Aggiungili a PATH in Windows (rimuovi i riferimenti al percorso di Devkit – non funziona)
  7. Scarica libxml2 , libxslt , librerie iconv (o qui )
  8. Esegui ruby extconf.rb --platform=ruby --n --use-system-libraries riferimento alle librerie scaricate
  9. Esegui make
  10. Esegui make install

passi

Bundle Install

Il primo passo è quello di raggruppare .

Questo metterà la gem nokogiri sul tuo computer senza eseguire il compilatore preconfigurato (che per lo più non funziona in Windows).

Questo mostrerà Nokogiri come installato :

inserisci la descrizione dell'immagine qui

Navigare

Passare alla cartella nokogiri , per trovare ext/nokogiri/extconf.rb :

inserisci la descrizione dell'immagine qui

Apri extconf.rb

… e aggiungi dir_config('iconv').any? or pkg_config('libiconv') dir_config('iconv').any? or pkg_config('libiconv') in #376

inserisci la descrizione dell'immagine qui

Nokogiri standard installa “fa affidamento” sull’inclusione di iconv libxml2 – dobbiamo definirlo esplicitamente, altrimenti si verificherebbero errori di iconv.h is missing .

Aggiungi Toolchain

Non usare devkit per questo – non funziona.

Hai bisogno di MinGW :

inserisci la descrizione dell'immagine qui

Ho zippato le mie cartelle MinGW64 e MSYS64 su Mega (chiave !FJtcq25l-QMsNltCxllMhc1IGqORvap8xv8gWxSUbDA ):

inserisci la descrizione dell'immagine qui

Aggiungi al PERCORSO

Questo dà accesso a gcc e make (entrambi richiesti):

inserisci la descrizione dell'immagine qui

Rimuovi il devkit ref dal tuo percorso e aggiungi quanto segue:

  • MINGW64_PATH / bin
  • MSYS64_PATH / bin

Scarica Libs

Ho aggiunto le librerie a Mega:

inserisci la descrizione dell'immagine qui

Li decomprimeresti qui:

inserisci la descrizione dell'immagine qui

Tutte le librerie provengono da questa fonte .

Esegui extconf.rb

Una volta che le librerie sono sul tuo sistema, puoi eseguire ruby extconf.rb per configurare la build:

inserisci la descrizione dell'immagine qui

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

inserisci la descrizione dell'immagine qui

Questo potrebbe creare errori / avvertenze, a patto che reciti ” Error 1 (ignored) “, dovrebbe essere a posto.

In seguito, usa make install :

inserisci la descrizione dell'immagine qui

Quindi accedere all’installazione di Rails ed eseguire i rails s :

inserisci la descrizione dell'immagine qui


Spiegazione

Per dare contesto:

Ruby 2.2+ su Windows non compila le estensioni richieste da Nokogiri.

Le estensioni di una gem sono le dipendenze extra (librerie) che usa.

Sono costruiti quando si installa la gem:

inserisci la descrizione dell'immagine qui


estensioni

La mancanza di estensioni impedisce a Nokogiri di funzionare.

Le estensioni esistono nella cartella ext di una gem ( puoi leggerle qui ):

inserisci la descrizione dell'immagine qui

Mysql2 , RMagick , PGSQL , Nokogiri ecc. Nokogiri tutte le estensioni / librerie.

Questo è il motivo per cui – su Windows – devi installare le opzioni personalizzate ( --with-opt-dir ) quando si installa la gem. Ciò fornisce a Ruby / the shell / ( cmd ) le directory lib / include necessarie per build i file gem (è l’equivalente di come funziona PATH ).

Su Linux / Mac , queste directory sono gestite con i rispettivi gestori di pacchetti ( brew / apt-get ). Windows non ha questo, quindi è necessario installare le estensioni manualmente.

Poiché Windows non ha un set standard di librerie, devi scaricarle tu stesso. Devi anche costruirli da soli (che è difficile).

La soluzione per l’installazione di Nokogiri è quella di utilizzare le librerie giuste e creare strumenti per ottenere l’installazione della gem.


Costruire

La differenza con Ruby 2.2+ è che la gem “installerà” senza mostrare alcuna eccezione. Pensi che sia stato installato, solo per trovare Rails non caricato (da cui l’errore nokogiri/nokogiri.so ).

Ciò significa che devi assicurarti di avere i file sul tuo sistema ed eseguire il compilatore per installarli.

La documentazione di cui sopra dovrebbe mostrarti come farlo.