such cannot ruby sqlite

cannot - Ruby no puede encontrar el controlador sqlite3 en Windows



ruby sqlite3 (8)

Estoy intentando configurar Ruby on Rails en Windows. Estoy usando la distribución de Flash Rails que se ve bastante bien, pero hay un problema con sqlite3. Encontré los hilos que me dicen que instale la versión 1.2.3, que se instaló bien. Estoy usando ruby ​​1.9.0, y cada vez que intento ejecutar un script (por ejemplo, rake db: create) que usa la base de datos aparece un mensaje de error "no se encontró ningún controlador para sqlite3".

Esto aparentemente es un sqlite3.dll perdido, pero tengo el dll en%% PATH%, y también he intentado copiarlo en el directorio donde ejecuto el script, el directorio donde vive el código ruby ​​sqlite3.

¿Alguien tiene alguna idea? Si es posible, quiero que todas las cosas de ruby ​​sean independientes para que pueda usarlas desde un pen drive.

EDITAR: Para aclarar, ya utilicé la instalación de gema para instalar la gema ruby-sqlite3 - simplemente no es funcional ya que no puede encontrar el sqlite3.dll (aunque en realidad está presente en un directorio en mi% PATH%)

EDITAR PARTE 2: después de investigar un poco más, aparece el problema de que ruby ​​no cargará sqlite3_api.dll. Lo he copiado en todo mi sistema de archivos, solo recibo una falla al leer el archivo. ¡Otras bibliotecas dll en el mismo directorio (por ejemplo, zlib.dll) funcionan bien! Intenté instalar los dlls en system32, y eso tampoco funcionó.


Intenta instalar la gema sqlite3-ruby:

gem install sqlite3-ruby


Intenta ir a la página de descarga de sqlite.org y obtén el dll comprimido. Luego, colóquelo en su carpeta c:/windows/system32 , que debería permitir que Ruby lo encuentre.


Para aclarar, ¿qué gema estás usando? sqlite-ruby o sqlite3-ruby ?

Son parte del mismo proyecto, pero diferentes lanzamientos. La clave es que sqlite3 parece tener código de controlador incluido.

Supongo que está intentando usar el primero, ya que me está dando el mismo error. Si es así, intente cambiar.

Además ... ¿Qué tan literal se refiere a esto?

pero tengo el dll en mi% PATH%

  1. PATH=...;C:/sqlite/sqlite3.dll
  2. PATH=...;C:/sqlite

El primero intentará encontrar C:/sqlite/sqlite3.dll/sqlite3.dll , AFAIK.


Algo similar me pasó recientemente, así que pensé en actualizar mi respuesta.

Como referencia, hay un archivo sqlite3_api.dll ubicado en el directorio lib de gem. Además, el archivo sqlite3.dll debe ser accesible en la ruta. Son archivos diferentes, el primero es requerido por la gema para interconectar Ruby con el código C, mientras que el segundo contiene la implementación real de Sqlite.

Lo mejor es obtener el segundo archivo del sitio web sqlite y extraerlo al directorio Ruby / bin (ya que no debería poner DLL en los directorios windows o windows / system manualmente).

Por lo tanto, para referencia, "sqlite3_api.dll" debe estar en:

Ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.3-x86-mswin32/lib

y "sqlite3.dll" debe estar en la ruta, posiblemente en:

Ruby/bin

En cuanto al problema del "controlador no encontrado", le sugiero que pruebe primero las cosas fáciles y asegúrese de que las gemas estén instaladas correctamente y actualizadas, y que las variables de entorno RUBYLIB y PATH estén configuradas adecuadamente. (Es posible que se requiera el reinicio del sistema para propagar los cambios por completo).


El problema simplemente es que sqlite3-ruby 1.2.3 no es compatible con ruby ​​1.9. Esto se debe a que ruby ​​1.9 no usa archivos .dll para bibliotecas c, sino que usa archivos .so. Además, desde sqlite3_api.dll está escrito contra msvcrt-ruby18.dll. Esto significa que específicamente solo admitirá ruby ​​1.8. *.

La buena noticia es que hay una versión binaria que respaldará a ruby ​​1.8 y ruby ​​1.9. Desinstalar todas las versiones anteriores de sqlite3-ruby y luego instalar esta. (Puede que tenga que eliminar manualmente algunas versiones de la gema después de la desinstalación.) Para instalarlo, utilice

install sqlite3-ruby --source http://gems.rubyinstaller.org

para más información vea este sitio web


En este enlace, descargue sqlitedll-3_6_10.zip y extráigalo a ruby ​​/ bin!


Reinicia tu máquina después de ejecutar install sqlite3-ruby


Yo uso Ruby 1.8.7 (también funciona con 1.9.1) OS es WindowsXP SP3

  1. Vaya a http://www.sqlite.org/download.html y descargue el archivo sqlitedll-3_7_0_1.zip (265.19 KiB) y descomprímalo, entonces obtendremos sqlite3.dll

  2. Copie sqlite3.dll a su carpeta bin como C: / Ruby191 / bin o C: / Ruby187 / bin, luego funciona