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%
-
PATH=...;C:/sqlite/sqlite3.dll
-
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
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
Copie sqlite3.dll a su carpeta bin como C: / Ruby191 / bin o C: / Ruby187 / bin, luego funciona