ruby-on-rails - instalar - ver version de rails
''require'': no se puede cargar dicho archivo-''nokogiri / nokogiri''(LoadError) cuando se ejecuta `rails server` (4)
-
Primero, desinstale la versión de Nokogiri que tiene actualmente con:
gem uninstall nokogiri
-
Descargar Nokogiri 1.6.6.2 (x64) o Nokogiri 1.6.6.2 (x86)
-
Instale esta versión localmente usando:
gem install --local C:/Users/$user$/Downloads/nokogiri-1.6.6.2-x64-mingw32.gem
o si estás ejecutando Ruby de 32 bits:
gem install --local C:/Users/$user$/Downloads/nokogiri-1.6.6.2-x86-mingw32.gem
La ruta puede variar según el lugar donde descargó el archivo.
Intente iniciar el servidor nuevamente utilizando el servidor
ruby bin/rails server
, y debería funcionar.
Estoy ejecutando una instalación limpia de Ruby 2.2.1 en Windows 8.1 con DevKit. Después de la instalación ejecuto:
gem install rails
rails new testapp
cd testapp
rails server
dejando todo lo demás por defecto.
El proceso falla en la última línea cuando, en lugar de ejecutar el servidor, recibo el mensaje de error
in ''require'': cannot load such file -- ''nokogiri/nokogiri'' (LoadError)
Sucede cada vez y he mirado alrededor e intentado todo lo que encontré para solucionarlo, pero hasta ahora nada ha funcionado.
¿Cuál es el problema aquí y cómo consigo que funcione una aplicación Rails de prueba simple?
Nokogiri aún no es compatible con Ruby 2.2 en Windows. El próximo lanzamiento lo hará. Ver https://github.com/sparklemotion/nokogiri/issues/1256
Nokogiri no admite compilaciones nativas (por ejemplo, con devkit) en Windows. En su lugar, proporciona gemas que contienen archivos DLL preconstruidos.
Hay una discusión a la que es posible que desee unirse o ver sobre el tema del soporte de desarrollo de devkit aquí: https://github.com/sparklemotion/nokogiri/issues/1190
Obtuve Nokogiri con Ruby 2.2 en Windows 10 con una mezcla de Mike Dalessios y Julios.
- Busque la última versión de Nokogiri en https://github.com/sparklemotion/nokogiri/issues/1256 .
-
Ejecute la
gem uninstall nokogiri
. -
Agregue la
gem "nokogiri", ">= 1.6.7.rc"
a su Gemfile. -
Ejecute la
bundle install
. -
Ejecute la
bundle update nokogiri
si el paquete ha bloqueado a Nokogiri en alguna versión.
Reparar
- Instalación de paquete (obtiene archivos Nokogiri)
-
Vaya a
ruby_dir/lib/ruby/gems/2.2.0/gems/nokogiri-1.6.6.2/ext/nokogiri
-
Abra
extconf.rb
-
Agregue
dir_config(''iconv'').any? or pkg_config(''libiconv'')
dir_config(''iconv'').any? or pkg_config(''libiconv'')
a#376
-
Descargue las carpetas
MinGW64
yMSYS
de Mega -
PATH
aPATH
en Windows (elimine las referencias de ruta deDevkit
, no funciona) -
Descargue las
libxml2
,libxslt
,iconv
(o here ) -
Ejecute
ruby extconf.rb --platform=ruby --n --use-system-libraries
haciendo referencia a bibliotecas descargadas -
Corre
make
-
Ejecute
make install
Pasos
Instalación de paquete
El primer paso es agrupar .
Esto colocará la gema
nokogiri
en su máquina sin ejecutar el compilador preenvasado (que en su mayoría no funciona en Windows).
Esto mostrará Nokogiri como instalado :
Vistazo
Busque la carpeta
nokogiri
para encontrar
ext/nokogiri/extconf.rb
:
Abra
extconf.rb
... y agregue
dir_config(''iconv'').any? or pkg_config(''libiconv'')
dir_config(''iconv'').any? or pkg_config(''libiconv'')
a
#376
Las instalaciones estándar de Nokogiri "confían" en la inclusión
libxml2
de
iconv
. Necesitamos definirlo explícitamente, de lo contrario se producirán errores en
iconv.h is missing
Agregar cadena de herramientas
No use
devkit
para esto, no funciona.
Necesitas
MinGW
:
MinGW64
MSYS64
carpetas exactas
MinGW64
y
MSYS64
en Mega
(clave
!FJtcq25l-QMsNltCxllMhc1IGqORvap8xv8gWxSUbDA
):
Agregar a RUTA
Esto le da acceso a
gcc
&
make
(ambos requeridos):
Elimine el
devkit
ref de su ruta y agregue lo siguiente:
- MINGW64_PATH / bin
- MSYS64_PATH / bin
Descargar Libs
He agregado las librerías a Mega:
Los descomprimirás aquí:
Todas las bibliotecas son de here .
Ejecute
extconf.rb
Una vez que las bibliotecas estén en su sistema, puede ejecutar
ruby extconf.rb
para configurar la compilación:
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
Esto puede crear errores / advertencias, siempre que diga "
Error 1 (ignored)
", debería estar bien.
Después de eso, use
make install
:
Luego vaya a la instalación de Rails y ejecute
rails s
:
Explicación
Para dar contexto:
Ruby 2.2+ en Windows no compila las extensiones que Nokogiri requiere.
Las extensiones de una gema son las dependencias adicionales (bibliotecas) que usa.
Se construyen cuando instalas la gema:
La falta de extensiones impide que Nokogiri se ejecute.
Existen extensiones en la carpeta
ext
de una gema (
Extensions
):
Mysql2
,
RMagick
,
Mysql2
,
RMagick
,
PGSQL
usan extensiones / bibliotecas.
Esta es la razón por la cual, en Windows, debe usar interruptores personalizados (
--with-opt-dir
) al instalar la gema.
Esto le da a Ruby / the shell / (
cmd
) los directorios
lib
/
include
necesarios para construir los archivos de la gema (es el equivalente de cómo funciona
PATH
).
En
Linux
/
Mac
, estos directorios se administran con los respectivos administradores de paquetes (
brew
/
apt-get
).
Windows no tiene esto, por lo que debe instalar las extensiones manualmente.
Como Windows no tiene un conjunto estándar de bibliotecas, debe descargarlas usted mismo. También tienes que construirlos tú mismo (lo cual es complicado).
La solución para la instalación de Nokogiri es usar las bibliotecas y herramientas de compilación adecuadas para instalar la gema.
Construir
La diferencia con Ruby 2.2+ es que la gema se "instalará" sin mostrar ninguna excepción.
Cree que se ha instalado, solo para encontrar que Rails no
se
carga (de ahí el error
nokogiri/nokogiri.so
).
Esto significa que debe asegurarse de tener los archivos en su sistema y ejecutar el compilador para instalarlos.
La documentación anterior debería mostrarle cómo hacerlo.