Ruby ne peut pas trouver le pilote sqlite3 sur Windows
Je suis en train de mettre en place le framework Ruby on Rails sur windows. Je suis en utilisant le Flash Rails de distribution qui ressemble assez bonne, mais il ya un problème avec sqlite3. J'ai trouvé les fils me disant d'installer la version 1.2.3, qui a installé amende. Je suis l'aide de ruby 1.9.0, et chaque fois que j'essaie et exécuter un script (par exemple, rake db:create) qui utilise la base de données, j'obtiens un message d'erreur "pas de pilote pour sqlite3 trouvé".
Ce qui, apparemment, est un manque sqlite3.dll mais j'ai la dll dans mon %PATH%, et j'ai aussi essayé de le copier dans le répertoire où j'exécute le script dans le répertoire où le sqlite3 code ruby vie.
Quelqu'un a une idée? Si possible, je veux que tous teh ruby trucs pour être autonome donc je peux l'utiliser à partir d'une clé usb.
EDIT: Pour préciser, j'ai déjà utilisé gem install pour installer ruby-gem sqlite3 - c'est juste non fonctionnels comme il ne le trouve pas sqlite3.dll (même s'il est effectivement présent dans un répertoire sur mon %PATH%)
MODIFIER la PARTIE 2: Après avoir fait des plus creuser, le problème apparaît que le rubis ne charge pas la sqlite3_api.dll. Je l'ai copié tous mes fichiers, je viens d'obtenir un échec de lecture de fichier. D'autres bibliothèques dll dans le même répertoire (par ex. zlib.dll) beau travail!
J'ai essayé d'installer la dll dans system32, et qui n'a pas fonctionné non plus.
source d'informationauteur Greg Reynolds
Vous devez vous connecter pour publier un commentaire.
Le problème posé est tout simplement que sqlite3-ruby 1.2.3 n'est pas compatible avec ruby 1.9. Cela est dû au fait que ruby 1.9 ne pas utiliser .dll fichiers de bibliothèques c il utilise .donc à la place les fichiers. En outre, depuis sqlite3_api.dll est écrit contre msvcrt-ruby18.dll. Cela signifie qu'il spécifiquement seulement de support de ruby 1.8.*.
La bonne nouvelle, c'est qu'il y a un gros binaire version prenant en charge à la fois ruby 1.8 et ruby 1.9. Désinstaller toutes les anciennes versions de sqlite3-ruby et puis l'installation de celui-ci. (Vous pouvez supprimer manuellement certaines versions de la gem après la désinstallation.) pour l'installer, utilisez
pour plus d'informations, voir cette site
Essayez d'installer le sqlite3-ruby gem:
Quelque chose de similaire m'est arrivé récemment, donc je pensais que je mettrais à jour ma réponse.
Pour la référence, il y a un sqlite3_api.dll fichier situé dans le joyau du répertoire lib. Aussi l'sqlite3.dll le fichier doit être accessible sur le chemin. Ils sont des fichiers différents, le premier est requis par le gem à l'interface Ruby code C, tandis que la seconde contient le réel Sqlite mise en œuvre.
C'est mieux pour le deuxième fichier à partir de l'sqlite site web et l'extraire vers le Rubis\bin (que vous ne devriez pas mettre manuellement DLL est en windows ou les répertoires windows\system plus).
Donc pour référence "sqlite3_api.dll" besoin d'être dans:
et "sqlite3.dll" besoin d'être sur le chemin, peut-être dans:
Comme pour le "pilote non trouvé" problème je vous suggérons d'essayer les choses faciles d'abord et assurez-vous des gemmes est installé correctement, jusqu'à ce jour, et que le RUBYLIB et le CHEMIN d'accès variables d'environnement sont définies de manière appropriée. (Redémarrage du système peut être nécessaire pour propager les modifications entièrement.)
Re ce lien
Télécharger sqlitedll-3_6_10.zip et extrait dans rubis/bin!
Essayez d'aller à sqlite.org page de téléchargement et d'obtenir la zippé jusqu'dll. Puis mettez-la dans votre
c:\windows\system32
dossier, qui devrait permettre à Ruby pour le trouver.Redémarrez votre ordinateur après l'exécution de l'install sqlite3-ruby
Pour clarifier, qui gem utilisez-vous?
sqlite-ruby
ousqlite3-ruby
?Ils font partie du même projet, mais les différentes versions. La clé est que
sqlite3
semble avoir code de pilote inclus.Je suppose que vous tentez d'utiliser la première fois, depuis il me fait la même erreur. Si oui, essayez de commutation.
Aussi.. Comment littérale voulez-vous dire par cela?
PATH=...;C:\sqlite\sqlite3.dll
PATH=...;C:\sqlite
La première tentera de trouver
C:\sqlite\sqlite3.dll\sqlite3.dll
autant que je sache.J'utilise Ruby 1.8.7 (fonctionne avec 1.9.1 trop)
OS est WindowsXP SP3
Aller à
http://www.sqlite.org/download.html
et Télécharger le fichier
sqlitedll-3_7_0_1.zip (265.19 KiB)
et décompressez-le, puis nous aurons
sqlite3.dll
Copie sqlite3.dll pour votre dossier bin
comme C:\Ruby191\bin ou C:\Ruby187\bin
puis il travaille