no se puede cargar dicho archivo - sqlite3 / sqlite3_native (LoadError) en ruby ​​on rails


84

Cuando intento configurar la instalación básica y el inicio del servidor usando Rails 4.0.0 en Ruby 2.0.0, me encuentro con el siguiente mensaje de error.

/usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)
    from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `rescue in <top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:2:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'
    from /home/penchal/new/site/config/application.rb:7:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

¿Cómo puedo evitar este mensaje de error y continuar?


¿en qué sistema operativo estás probando esto?
Saifis

Parece ser un problema de Windows. Las soluciones varían. Vea si esto es suficiente para usted stackoverflow.com/a/6126062/2576857 .
Doodad

1
Pero no parece que esté usando Windows. Quizás este artículo sea ​​de ayuda.
Althaf Hameez

Oh sí, / usr / local / etc, vi eso ahora, mi mal. Por lo que encontré, la mayoría de las personas que tenían este problema se debía a sqlite exe y dll no en la variable PATH, pero eso solo les sucedió a los usuarios de Windows. Creo que el artículo que proporcionaste debería dar en el clavo, pero esperemos y veremos.
Doodad

Si Rails 4 y Ruby 2.1. - mira aquí
discipleartem

Respuestas:


121

Busque su archivo gemspec sqlite3. Un ejemplo es /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

Ventanas: C:\Ruby21\lib\ruby\gems\2.1.0\specifications.

Debe ajustar de acuerdo con su ruta de Rubygem y versión sqlite3. Edite el archivo de arriba y busque la siguiente línea

s.require_paths=["lib"]

cámbialo a

s.require_paths= ["lib/sqlite3_native"]

7
Este es un error fantástico para un problema que no debería existir en primer lugar, dada la cantidad de usuarios de Rails en Windows. Sin embargo, me encantaría saber por qué funciona exactamente esto ...

1
Esto funcionó para 1.3.9 pero no fue necesario para 1.3.11. Estoy en Win7 x64.
Kidquick

3
Ya se presentó un error: no se pudo cargar 'active_record / connection_adapters / sqlite3_adapter'. Asegúrese de que el adaptador en config / database.yml sea válido. Si usa un adaptador que no sea 'mysql2', 'postgresql' o 'sqlite3' agregue la gema del adaptador necesaria al Gemfile.
Sterling Diaz

3
el error anterior con el adaptador no parece tener solución, hacer lo que hwding sugiere a continuación primero me ahorraría bastante tiempo; sin embargo, nuevamente, tal vez lo solucionen en las próximas versiones, o lo arreglarán en paquetes apilados como RailsInstaller ( ruby2.3.1 con devkit (mingw con herramientas de compilación), rails5.0.0.1) ps es increíble que este problema persista después de 2 años, dado que sqlite se usa de forma predeterminada en la aplicación predeterminada de esqueleto, y es el camino a seguir en guides.rubyonrails.org/getting_started.html
hello_earth

2
¿Dos años? ¿Qué tal TRES años?
Warren P

19

ver :https://stackoverflow.com/a/39136421/6755206

afortunadamente, no tiene que cambiar a ruby ​​2.0,
hay una solución a este problema, después de un sinfín de intentos ...

https://github.com/hwding/sqlite3-ruby-win


Pasos

Pre

  • gem uninstall sqlite3 --all

Fuente

Construir

  • ejecutar la línea de comandos en el directorio extraído
  • asegúrese de tener su compilador C instalado y agregado a PATH
  • gem install bundler
  • bundle install
  • rake native gem
  • encontrará un directorio llamado 'pkg' generado

Instalar en pc

  • ingrese dir 'pkg'
  • gem install --local sqlite3-xxx.gem ('xxx' es el código de versión)

Cheque

  • irb
  • require 'sqlite3'

1
Gracias @hwding. ¡Funciona perfectamente! En mi caso, usuario de Windows, parece que se compilaron dos versiones sqlite3 (32 y 64 bits) en 'pkg', pero acabo de instalar la de 64 bits (mi caso).
aaossa

1
sí, después de mucho intentarlo, esta es la única forma que funcionó .... otras personas ( reddit.com/r/rails/comments/30s1cz/… ) sugieren mudarse a algo como vagabundo y omitir Windows + Rails por completo
hello_earth

1
Confirmo que esta es la única solución que funciona para Windows 10; probé un par de correcciones, pero esta es la única que funciona.
numediaweb

1
Lo he hecho de acuerdo con los pasos mencionados, pero no veo ninguna carpeta creada con el nombre pkg.
Yashu Mittal

Me funcionó hasta you'll find a dir named 'pkg' generatedya que no vi ese directorio en ninguna parte. La solución de @Edson Momm a continuación funcionó para mí.
MSC

19

Dado que la solicitud de extracción n. ° 229 se ha fusionado, sqlite3 se puede instalar por git:clave. Es posible usar sqlite3 fácilmente a través de esta adición en su Gemfile:

gem 'sqlite3', git: "https://github.com/sparklemotion/sqlite3-ruby"

Esto funciona en RubyInstaller-2.4 y versiones posteriores. Instala automáticamente el paquete pacman requerido mingw-w64-x86_64-sqlite3cuando ejecuta bundler install.

Hay algunas sugerencias más para Rails en Windows en las Preguntas frecuentes de RubyInstaller2 .


1
Esta respuesta es útil para los nuevos instaladores de ruby ​​ruby ​​versión ruby 2.5.1p57 (2018-03-29 revisión 63029) y rails versión Rails 5.2.1
KTM

1
El PR se ha fusionado mientras tanto. Actualicé mi respuesta en consecuencia.
Lars Kanis

Para solucionar los problemas de SSL, utilicé: gem 'sqlite3', git: "git: //github.com/sparklemotion/sqlite3-ruby.git"
GrabzIt

13
gem uninstall sqlite3 --all
ridk exec pacman -S mingw-w64-x86_64-sqlite3
gem inst sqlite3 --platform ruby

Esto me solucionó el problema.

Windows 10
Ruby 2.5.3
Rails 5.2.2

1
Dios mío, esto es real: D Solo esto funciona para mí, Windows 10 es terrible para RoR. ¡Muchas gracias!
Usuario 987

Funcionó también para mí. Mi problema comenzó después de una actualización de ruby ​​2.4 a ruby ​​2.6 en Windows 10.
knut

Esta fue la respuesta para mí también en Win10 Ruby 2.6 (x64). ¡Gracias!
vercingortix

De hecho, tuve que hacer esto varias veces. Parece que cada vez que haría una bundle installpara instalar una nueva gema, me encontraría con este problema nuevamente y tendría que repetir los pasos anteriores.
vercingortix

9

Simplemente edite Gemfile y agregue gem 'sqlite3', platform: :ruby.


5

Ninguna compilación de las fuentes o la descarga de bibliotecas precompiladas resolverá este problema, créanme que lo intenté todo, el problema está en otro lado. Así es como funciona en Windows:

bundle update sqlite3

Es probable que obtenga otro error similar después de este con respecto a nokogiri, corríjalo con el comando:

bundle update nokogiri

¡Disfruta tu aplicación Ruby!


4

Desinstalar y reinstalar la gema sqlite3 funcionó para mí.

gem uninstall sqlite3

bundle

4

Esto funcionó para mí:

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"

4

MEJOR INSTALACIÓN OFICIAL

Estoy usando rieles 5.2.1p57, Windows 10 Solo ejecutar las siguientes líneas resolvió el problema

gem uninstall sqlite3

y desinstale todas las versiones instaladas. ejecutar de nuevo el siguiente comando

gem install sqlite3 --platform=ruby

Ya ha terminado. Avísame si el problema persiste.


3

Si la respuesta principal no funciona, una solución que descubrí es simplemente ir a su Gemfile y agregar el número de versión 1.3.11 (en lugar de 1.3.9) justo después de sqlite3. Entonces, la línea en su Gemfile ahora debería leer:

# Use sqlite3 as the database for Active Record
gem 'sqlite3',  '1.3.11'

2

Tuve el mismo error cuando actualicé mi versión de Ruby a 2.5.X. Seguí con rails task --traceque el sqlite3 no está disponible para la versión 2.5, que cambio mi GemFile, el cambio de gema "sqlite3" a "sqlite3-ruby", después de desinstalar la gema "sqlite3" y finalmente ejecuto el bundle install.

No sé cuál es la razón ... Leí que "sqlite3" aún no está disponible para ruby ​​2.5, pero no estoy seguro.


2

Para evitar este error, asegúrese de que gem sqlite3se agregue a su Gemfile. Luego extraiga "exe" sy "dll" del enlace de descarga de Sqlite a la carpeta bin de Ruby. Si el problema persiste. Prueba esto:

bundle update

gem uninstall sqlite3

Dada la posibilidad de elegir entre varias versiones de sqlite3, elija la última opción 'Todas las versiones'. Ingrese el último número aquí

Seleccione la gema para desinstalar:
1. sqlite3-1.3.13
2. sqlite3-1.3.13-x64-mingw32
3. Todas las versiones
> 3 .
.
Si elimina esta gema, estas dependencias no se cumplirán.
¿Continuar con Desinstalar? [yN]
> y

gem install sqlite3 --platform=ruby

rails s

Esto debería funcionar.

Lea este enlace para obtener más explicaciones si lo anterior funciona para usted.


1

Esto también me pasó a mí. Resultó que originalmente había instalado SQLite 1.3.10, pero luego copié algunas gemas del proyecto de screencasts del tutorial de Rails y enumeró SQLite 1.3.9. Luego obtuve el mismo error que tuviste. Lo cambié de nuevo a 1.3.10 y funcionó.

(Esto es en Windows 7. Estaba ejecutando el tutorial de screencast en Cloud9 IDE).


1

Esta es la única solución que funcionó para mí, derivada de esta publicación de problemas de GitHub :

  1. Obtenga la versión autoconf de las fuentes sqlite3 de https://www.sqlite.org/download.html .
  2. Inicie el shell MSYS.
  3. En lugar sin envasar para su sqlite3, versión estática de configuración sólo para evitar mantener DLL en RUTA: ./configure --disable-shared.
  4. Construirlo e instalarlo: make install DESTDIR=/c/dev/ruby/tmp. Puede cambiar el directorio.
  5. Abra el símbolo del sistema de Windows y ejecute gem uninstall sqlite3 --allpara eliminar todas las gemas sqlite3 existentes.
  6. Una vez más el símbolo del sistema de ventanas, construir e instalar la gema sqlite3: gem install sqlite3 --platform=ruby -- --with-sqlite3-include=C:\dev\ruby\tmp\usr\local\include --with-sqlite3-lib=C:\dev\ruby\tmp\usr\local\lib. Esos directorios include y lib pueden ser diferentes, así que verifique primero.

Estoy usando Ruby versión 2.5.1 y Rails versión 5.2.0 en Windows 10.


y archivo gemspec en la carpeta de origen de la gema
Bilal Qadri

1

¡Lo encontré! Vi esto https://www.youtube.com/watch?v=lsrzvX0qzmA
instalé: Versión de Rails: 5.2.1 Versión de Ruby: 2.5.3 (x64-mingw32) Versión de Sqlite 1.3.13
y tengo tu problema .. . mi solución:

  1. En su carpeta de instalación como C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \
    tiene carpetas: "sqlite3-1.3.13" "sqlite3-1.3.13-x64-mingw32"
  2. Busque el archivo
    C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13 \ lib \ sqlite3 \ sqlite3_native.so
  3. Cópielo en C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13-x64-mingw32 \ lib \ sqlite3 \ 2.5 \ sqlite3_native.so (puede que las carpetas no existan - cree y pegar)

1

Actualizado

Añadiendo lo siguiente al Gemfile arreglado para mí: gem 'sqlite3', '1.4.0', plataformas:: ruby


1

Cambie su gema sqlite3 en el Gemfile por esto:

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"

Entonces corre:

bundle install

0

Para los usuarios de OSX, esto puede resultar del uso de un administrador ruby ​​(por ejemplo, rvm).

Si edita su ~ / .bash_profile y agrega esto:

[[ "$APP" = *"/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/"* ]] && {
  echo Xcode detected
  rvm use system
}

Puede solucionar el problema. Reinicie Xcode antes de intentar compilar nuevamente.

El problema real se rastrea aquí: https://openradar.appspot.com/28726736 ).

El crédito completo va a: https://egeek.me/2018/04/14/ipa-export-error-in-xcode-and-ruby/

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.