Question

Je suis ruby 1.8.7 (compilées en natif), rails 2.3.4, OS x 10.6.2 et aussi sqlite3-ruby.

L'erreur que je reçois lors de l'accès à l'application rails est

NameError:uninitialized constant SQLite3::Conducteur::Native::Conducteur::API

L'histoire:
J'ai mis à jour pour snow leopard par la migration de mes applications avec un FW-câble de mon ancien macbook vers le nouveau.Tout était en marche parfaitement depuis des mois, mais Hier, j'ai besoin d'installer watir, qui était la personne à charge sur rb-appscript, qui n'a pas de construire en raison d'une "mauvaise architecture" erreur dans libsqlite3.dylib.J'ai pensé que la version a été faite sur l'ancienne machine, j'ai donc voulu reconstruire sqlite3-ruby:

$ sudo gem désinstaller sqlite3-ruby

$ sudo gem install sqlite3-ruby

La construction d'extensions natives.Cela pourrait prendre un certain temps...
ERREUR:Erreur lors de l'installation sqlite3-ruby:
ERREUR:N'a pas de construire gem extension native.

/usr/local/bin/ruby extconf.rb
la vérification de fdatasync() en lrt...pas de
la vérification de sqlite3.h...oui
la vérification de sqlite3_open() en lsqlite3...pas de
* extconf.rb a échoué *
N'a pas pu créer le Makefile pour une raison quelconque, manque probablement d'
bibliothèques nécessaires et/ou les en-têtes.De vérifier la mkmf.le fichier journal pour plus
des détails.Vous pouvez avoir besoin d'options de configuration.

Il semble que le sqlite3 libs ne fonctionnent pas correctement.J'ai essayé d'installer macports sqlite3 (sudo port install sqlite3) et de l'utiliser à la place, mais avec le même résultat...j'ai donc reconstruire sqlite3 à partir de zéro..télécharger->configurer->faire->make install.Après cela, le joyau construit à la perfection, mais ne fonctionne pas dans les rails, ce qui donne l'erreur en haut de cet article.

Je ne suis pas vraiment sûr où aller à partir d'ici parce que j'ai essayé ce qui suit

  1. Reconstruire sqlite3 de la plus récente à la source (http://www.sqlite.org/download.html)
  2. Réinstallé sqlite3-ruby (sudo gem désinstaller sqlite3-ruby && sudo gem install sqlite3-ruby)
  3. Utilisé sqlite3 de macports (sudo port install sqlite3 && sudo gem install sqlite3-ruby)
  4. Réinstallé rails (sudo gem install rails sqlite3-ruby ) et mise à jour de l'environnement.rb rails 2.3.5.

En vain, je reçois toujours ce message d'erreur:

NameError:uninitialized constant SQLite3::Conducteur::Native::Conducteur::AP
à partir de /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dépendances.rb:105:dans const_missing'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/driver/native/driver.rb:76:in
ouvrir"
à partir de /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/base de données.rb:76:dans "initialize"

Btw, j'ai Xcode installé à partir de la panthère des Neiges CD.

Que puis-je faire pour résoudre le problème?

Était-ce utile?

La solution 2

Merci pour les réponses.Voici ce que j'ai fait pour résoudre le problème:

  1. Réinstallation complète de ruby1.8.7 /usr/local, voir ici: http://hivelogic.com/articles/ruby-rails-leopard

    Note:readline ne fonctionnait pas lors de la recompilation de ruby sur mon mac, j'ai donc dû construire que trop de rayures et assurez-vous d'ajouter l'option --with-readline-dir option à configurer:

    ./configure --enable-shared --enable-pthread CFLAGS=-D_XOPEN_SOURCE=1 --prefix=/usr/local --with-readline-dir=/usr/local

  2. Réinstallation complète de sqlite3 /usr/local

  3. Reconstruire toutes les gemmes sur le système avec sudo gem install XXX, y compris sqlite3-ruby.C'est seulement nécessaire avec plate-forme spécifique des gemmes, mais je l'ai trouvé à être plus rapide pour installer le tout dans un oneliner:

    sudo gem install gem1 gem2 ...gemN --no-ri --no-rdoc

J'ai essayé d'aller avec ruby1.9 mais tout arrêt de travail en raison de dépendances cassées dans les gemmes et les plugins, je ne voudrais pas vous recommandons de passer à 1,9 sauf si vous êtes pour certains lourde de débogage et de savoir comment restaurer votre ancien système!

Enfin, tout fonctionne à nouveau!

Autres conseils

Mon problème est légèrement différent, et en fait non des solutions que j'ai trouvé sur la ligne de travaillé.

Lorsque vous essayez d'installer sqlite3-ruby après la mise à jour Snow Leopard et XCode 4.0 essai, j'ai obtenu le message

checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 is missing. Try 'port install sqlite3 +universal' or 'yum install sqlite3-devel'

cependant sqlite3 a été installé, et aussi ré-installation n'a pas aidé.J'ai déjà eu le troub le avant de avec 64 bits et universelle versions, mais que j'avais effacé.En fait, j'ai pu travailler avec sqlite3.

Donc gem install devrait aussi vous dire quelque chose le long de ces lignes:

Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.3.1 for inspection.

Donc cd vers le répertoire et là recherchez extconf.rb, le mien était à la mode ./ext/sqlite3/extconf.rb J'ai trouvé que ruby était la vérification de la sqlite3 bibliothèque à l'aide de

asplode('sqlite3') unless find_library 'sqlite3', 'sqlite3_libversion_number'

J'ai donc tiré au-dessus de la cisr et de vérifier pourquoi cela ne fonctionnait pas:

  require 'mkmf'
   find_library 'sqlite3', 'sqlite3_libversion_number'

Eh bien en fait cela fonctionne et mon ruby trouver la bibliothèque.Alors pourquoi ne pas travailler à partir de l'installation?L'inspection extconf.rb étroitement montré la ligne suivante:

  sqlite = dir_config('sqlite3', ['/usr/local', '/opt/local', '/usr'])

Lorsque j'exécute ce dans la cisr:

require 'mkmf'
  sqlite = dir_config('sqlite3', ['/usr/local', '/opt/local', '/usr']) 
  find_library 'sqlite3', 'sqlite3_libversion_number'

Je vais surprenant de ne pas trouver la bibliothèque la plus.En fait, je ne comprends pas comment cela peut être, mais c'est ce qui se passe.

C'est donc le remède:commentaire la ligne

sqlite = dir_config('sqlite3', ['/usr/local', '/opt/local', '/usr'])

dans extconf.rb

Puis, à partir de /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.3.1, j'ai publié

 sudo ruby ./setup.rb

Cela se passait sans problèmes (j'ai essayé avant de commenter le sqlite= de ligne, et il ne fonctionne pas)

Redémarrage de l'application ruby qui avait des problèmes avec sqlite.Fonctionne très bien.

Espérons que cela aidera quelqu'un.

Icecream

J'ai trouvé quelques conseils sur ce à N'Parc sur son blog:

http://blog.docuverse.com/2009/09/24/installing-sqlite3-ruby-gem-on-snow-leopard/

Sa solution, points droit de retour à un Débordement de Pile dans le fil de discussion suivant:

Snow Leopard, sqlite3-ruby

La réponse sur la commande ln semble avoir résolu mon problème.Espérons qu'il vous aide aussi.

Si le gem n'est pas la construction ce n'est pas parce que vous avez besoin nécessairement de reconstruire sqlite3 de la source, mais pour construire le gem, vous aurez besoin de sqlite3 développeur bibliothèques.

Sur la plupart des systèmes comme Linux ou Unix, vous pouvez les installer en faisant "sudo apt-get install sqlite3-dev', mais je ne suis pas sûr de savoir comment il fonctionne avec Macports - mais assurez-vous d'avoir ce paquet.Vous devez vous assurer qu'ils sont dans votre chemin d'accès ou passer la dir qu'ils sont en lorsque vous installez le gem (voir le gem est de sortie pour des indications sur les options pour faire que).

J'ai sqlite3 qui fonctionne sur mon Mac, tout beaux, à la fois avec 1.8.7 et maintenant, ma mise à jour Ruby 1.9.1.Vous pouvez vous assurer que vous avez le XCode Developer Tools installés.

Pour ceux qui sont sur Snow Leopard 64 et le fait que cette question de l'installation de ce macport résolu le problème pour moi.

sudo port install rb-sqlite3 +universal
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top