2009-02-05 20 views
10

Sto provando a configurare Ruby on Rails su Windows. Sto utilizzando la distribuzione di Flash Rails che sembra abbastanza buona, ma c'è un problema con sqlite3. Ho trovato i thread che mi dicevano di installare la versione 1.2.3, che ha installato bene. Sto usando Ruby 1.9.0 e ogni volta che provo a eseguire uno script (ad es. Rake db: create) che usa il database ottengo un messaggio di errore "nessun driver per sqlite3 trovato".Ruby non riesce a trovare il driver sqlite3 su windows

Questo a quanto pare è uno sqlite3.dll mancante, ma ho la dll nel mio% PATH%, e ho anche provato a copiare nella directory in cui sto facendo funzionare lo script da, la directory in cui il codice vita sqlite3 rubino .

Qualcuno ha qualche idea? Se possibile, voglio che tutte le cose rubino siano autonome, così posso usarle da una pen drive.

EDIT: Per chiarire, ho già usato gem install per installare la gemma ruby-sqlite3 - è semplicemente non funzionale in quanto non riesce a trovare sqlite3.dll (anche se è effettivamente presente in una directory sul mio% PATH%)

EDIT PARTE 2: Dopo aver fatto qualche altro scavo, il problema sembra che ruby ​​non caricherà sqlite3_api.dll. L'ho copiato su tutto il mio filesystem, ho appena ricevuto un errore nel leggere il file. Altre librerie di DLL nella stessa directory (ad esempio zlib.dll) funzionano bene! Ho provato a installare le DLL in system32 e anche questo non ha funzionato.

risposta

7

Il problema è semplicemente che sqlite3-ruby 1.2.3 non è compatibile con Ruby 1.9. Ciò è causato dal fatto che Ruby 1.9 non usa i file .dll per le librerie c che utilizza invece i file .so. Inoltre, dal momento che sqlite3_api.dll è scritto contro msvcrt-ruby18.dll. Ciò significa che in particolare supporterà solo Ruby 1.8. *.

La buona notizia è che esiste una versione binaria in grado di supportare sia Ruby 1.8 che Ruby 1.9. Disinstallare tutte le precedenti versioni di sqlite3-ruby e installarne una. (Potrebbe essere necessario eliminare manualmente alcune versioni la gemma dopo la disinstallazione.) Al fine di installarlo utilizzare

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

per maggiori informazioni consultare il sito this

+0

Il parametro source non è più necessario. La versione 1.2.5 più recente della gem include il supporto per questi binari. –

+0

Ha fatto questo, ottenendo sempre lo stesso errore, qualche pensiero? – Paul

+0

Paul, non sei ancora in grado di farlo funzionare? sqlite3-ruby è uscito e ha funzionato per molti mesi e molti utenti hanno riportato il successo. Vorrei sapere se questo è ancora un problema. –

3

provare a installare la gemma sqlite3-ruby:

gem install sqlite3-ruby 
+0

Ho provato che (questo è quello che stavo parlando con la versione 1.2. 3 commento). Essenzialmente gem install sqlite3-ruby non funziona su Windows, quello che dovete fare gem install version 1.2.3 sqlite-ruby che ha installato, ma mi ha lasciato il problema che ho descritto. –

+0

Questo ha funzionato. Grazie! – Jonathan

1

provare ad andare alla pagina di download sqlite.org e ottenere la dll zippato. Poi metti quello nella tua cartella c:\windows\system32, che dovrebbe permettere a Ruby di trovarlo.

0

Per chiarire, quale gemma stai usando? sqlite-ruby o sqlite3-ruby?

Fanno parte dello stesso progetto, ma versioni diverse. La chiave è che sembra che sqlite3 includa il codice del driver.

Suppongo che stiate tentando di utilizzare il primo, poiché mi sta dando lo stesso errore. Se è così, prova a cambiare.


Inoltre .. In che senso intendi con questo?

ma ho la dll nel mio% PATH%

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

Il primo tenterà di trovare C:\sqlite\sqlite3.dll\sqlite3.dll, AFAIK.

+0

Sto usando sqlite3-ruby. Penso che qualcosa di molto sbagliato sia andato storto nel pacchetto ... –

+0

Intendevo dire che la dll si trova in una directory (in realtà più di una come la sto copiando in preda alla disperazione!) Che è sulla mia strada. In effetti è sqlite3_api.dll che non viene trovato, in base al messaggio di errore. –

3

Qualcosa di simile mi è successo di recente, quindi ho pensato di aggiornare la mia risposta.

Per riferimento c'è un file sqlite3_api.dll che si trova nella directory lib della gemma. Anche il file sqlite3.dll deve essere raggiungibile sul percorso.Sono file diversi, il primo è richiesto dalla gem per interfacciare il codice Ruby in C, mentre il secondo contiene l'attuale implementazione di Sqlite.

È meglio ottenere il secondo file dal sito Web sqlite ed estrarlo nella directory Ruby \ bin (poiché non è necessario inserire manualmente le DLL nelle directory windows o windows \ system).

Così per riferimento "sqlite3_api.dll" deve essere in:

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

e "sqlite3.dll" ha bisogno di essere sulla strada, possibilmente in:

Ruby\bin 

Per quanto riguarda il Problema di "driver non trovato" Suggerirei di provare le cose facili prima di assicurarmi che gems sia installato correttamente, aggiornato e che le variabili di ambiente RUBYLIB e PATH siano impostate in modo appropriato. (Potrebbe essere necessario riavviare il sistema per propagare completamente le modifiche)

+0

Il mio è in 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 Quale è nel mio percorso –

+0

Bene nella mia installazione la DLL non è sul percorso, ma appena caricata come richiesto dalla gemma. Potrebbe anche non essere in grado di trovare la gemma sqlite3, poiché il driver a cui fa riferimento è il pacchetto gem, non la DLL. – Daemin

+0

Ho scavato nel codice e l'errore di caricamento non riuscito si verifica quando il codice gemma esegue "package require sqlite3_api" –

3

Re this link Scarica sqlitedll-3_6_10.zip ed estrarre in rubino /bidone!

1

riavviare il computer dopo aver eseguito l'installazione sqlite3-ruby

0

uso di Ruby 1.8.7 (1.9.1 funziona con troppo) sistema operativo è Windows XP SP3

  1. Vai http://www.sqlite.org/download.html e download presentare sqlitedll-3_7_0_1.zip (265,19 KiB) e decomprimere poi avremo sqlite3.dll

  2. Copia sqlite3.dll alla cartella bin come C: \ Ruby191 \ bin o C: \ Ruby187 \ bin allora funziona

Problemi correlati