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?

Penchala Reddy Audireddy
fuente
¿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"]
Harish Gopalakrishnan
fuente
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'
hwding
fuente
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 .

Lars Kanis
fuente
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
Edson Momm
fuente
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.

RAM
fuente
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!

Norman Seßler
fuente
4

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

gem uninstall sqlite3

bundle
JackHasaTeclado
fuente
4

Esto funcionó para mí:

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"
Bolan Oluwa
fuente
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.

Pradeep Sapkota
fuente
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'
Andrew Britton
fuente
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.

Adrián Higuita
fuente
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.

Saurabh Borse
fuente
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).

Paul Macías
fuente
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.

ismailarilik
fuente
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)
Roman Dergunov
fuente
1

Actualizado

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

Ryan
fuente
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
Nicolás Nisoria
fuente
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/

Julian K
fuente