2009-02-05 27 views
10

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 utiliza la base de datos aparece un mensaje de error "no se encontró ningún controlador para sqlite3".Ruby no puede encontrar el controlador sqlite3 en Windows

Aparentemente falta sqlite3.dll, pero tengo el archivo DLL en mi% PATH%, y también he intentado copiarlo en el directorio donde ejecuto el script, el directorio donde vive el código sqlite3 ruby .

¿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é gem install para instalar la gema ruby-sqlite3 - simplemente no es funcional ya que no puede encontrar el sqlite3.dll (aunque está presente en un directorio en mi% PATH%)

EDITAR PARTE 2: Después de hacer un poco más de excavación, 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ó.

Respuesta

7

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 admite ruby ​​1.8 y ruby ​​1.9. Desinstalar todas las versiones anteriores de sqlite3-ruby y luego instalar esta. (Es posible que tenga que eliminar manualmente algunas versiones de la gema después de desinstalar.) Con el fin de instalarlo usar

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

para más información véase el sitio web de this

+0

El parámetro fuente ya no es necesario. La nueva versión 1.2.5 de la gema incluye soporte para estos binarios. –

+0

¿Esto, sigue recibiendo el mismo error, algún pensamiento? – Paul

+0

Paul, ¿aún no puedes hacer que esto funcione? sqlite3-ruby ha estado funcionando desde hace muchos meses y muchos usuarios informaron que tuvieron éxito. Me gustaría saber si esto todavía es un problema. –

3

prueba a instalar la gema sqlite3-ruby:

gem install sqlite3-ruby 
+0

Yo probé que (eso es lo que estaba hablando con la versión 1.2. 3 comentario). Esencialmente joya instalar sqlite3-ruby no funciona en las ventanas, que tiene que hacer joya instalar --version 1.2.3 sqlite-rubí el que está instalado, pero me dejó el problema que he descrito. –

+0

Esto funcionó. ¡Gracias! – Jonathan

1

trate de ir a sqlite.org página de descarga y obtener la dll neceser. Luego, colóquelo en su carpeta c:\windows\system32, que debería permitir que Ruby lo encuentre.

0

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.


También ... ¿Qué tan literal quiere decir con esto?

pero tengo la 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.

+0

Estoy usando sqlite3-ruby. Creo que algo muy malo ha salido mal con el paquete ... –

+0

Quiero decir que el dll está en un directorio (¡en realidad más de uno, ya que lo he estado copiando desesperadamente!) Que está en mi camino. De hecho, es el sqlite3_api.dll que no se encuentra, de acuerdo con el mensaje de error. –

3

Algo similar me ha pasado recientemente, así que pensé en actualizar mi respuesta.

Como referencia, hay un archivo sqlite3_api.dll ubicado en el directorio lib de gem's. 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 debe poner DLL en los directorios de Windows o Windows \ system manualmente).

Así como referencia "sqlite3_api.dll" tiene que estar en:

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

y "sqlite3.dll" es necesario que haya en el camino, posiblemente en:

Ruby\bin 

En cuanto a la Problema de "controlador no encontrado" Sugiero probar primero las cosas fáciles y asegurarse de que las gemas estén instaladas correctamente y actualizadas, y de que las variables de entorno RUBYLIB y PATH estén configuradas correctamente. (El reinicio del sistema puede ser necesario para propagar los cambios por completo).

+0

El mío está en C: \ Documents and Settings \ greynolds \ Desktop \ FlashRails_Ruby1.9-Win32-0.9.0.2 \ Flash Rails Ruby1.9 \ ruby ​​\ lib \ ruby ​​\ gems \ 1.9.0 \ gems \ sqlite3-ruby -1.2.3-x86-mswin32 \ lib Lo que está en mi camino –

+0

Bueno, en mi instalación, la DLL no está en la ruta, sino que acaba de ser cargada como lo requiere la gema. También podría ser que no puede encontrar la gema sqlite3, ya que el controlador al que se refiere es el paquete de gemas, no el DLL. – Daemin

+0

Indagué en el código y el error al cargar no se produce cuando el código gema ejecuta "package require sqlite3_api" –

3

Re this link Descargar sqlitedll-3_6_10.zip y se extrae en rubí /¡compartimiento!

1

reiniciar el equipo después de ejecutar instalación de sqlite3-ruby

0

uso de Ruby 1.8.7 (1.9.1 trabaja con demasiado) sistema operativo es Windows XP SP3

  1. Ir a http://www.sqlite.org/download.html y Descarga presentar sqlitedll-3_7_0_1.zip (265.19 KiB) y descomprimir entonces obtendremos sqlite3.dll

  2. Copia sqlite3.dll a la carpeta bin como C: \ Ruby191 \ bin o C: \ Ruby187 \ bin entonces funciona

Cuestiones relacionadas