Pregunta

Tengo ruby 1.8.7 (nativo compilado), rieles 2.3.4, OS x 10.6.2 y también sqlite3-ruby.

El error me estoy poniendo al acceder a la aplicación rails es

NameError:sin inicializar constante SQLite3::Motor::Nativo::Motor::API

La historia:
Actualizar a snow leopard por migrar mis aplicaciones con un FW-cable de mi antiguo macbook a la nueva.Todo estaba funcionando perfectamente durante meses, pero Ayer tuve que instalar watir, que dependía de la rb-appscript, que no construcción, debido a un "mal arquitectura" error en libsqlite3.dylib.Pensé que la construcción se hizo en la edad de la máquina, así que quería reconstruir sqlite3-ruby:

$ sudo gem desinstalar sqlite3-ruby

$ sudo gem install sqlite3-ruby

La construcción de extensiones nativas.Esto podría tomar un tiempo...
ERROR:Error de instalación de sqlite3-ruby:
ERROR:No se pudo construir joya de extensión nativa.

/usr/local/bin/ruby extconf.rb
la comprobación de fdatasync() en la lrt...no
la comprobación de sqlite3.h...sí
la comprobación de sqlite3_open() en lsqlite3...no
* extconf.rb fallado *
No se pudo crear el Makefile debido a alguna razón, probablemente la falta de
las bibliotecas necesarias y/o cabeceras.Compruebe la mkmf.archivo de registro para obtener más
detalles.Usted puede necesitar opciones de configuración.

Parece que el sqlite3 libs no están funcionando correctamente.He tratado de instalar macports sqlite3 (sudo port install sqlite3) y utilizar en su lugar, pero con el mismo resultado...así que reconstruir sqlite3 desde cero..descargar->configurar->hacer->make install.Después de eso, el gem se basa ahora perfectamente, pero no funciona en rails, dando el error en la parte superior de este artículo.

No estoy muy seguro de dónde ir de aquí porque he intentado lo siguiente

  1. La reconstrucción de sqlite3 desde el más reciente de origen (http://www.sqlite.org/download.html)
  2. Reinstalado sqlite3-ruby (sudo gem desinstalar sqlite3-ruby && sudo gem install sqlite3-ruby)
  3. Utiliza sqlite3 de macports (sudo port install sqlite3 && sudo gem install sqlite3-ruby)
  4. Reinstalado rieles (sudo gem install rails sqlite3-ruby ) y actualizado.rb a rails 2.3.5.

No en vano, todavía se me pone este error:

NameError:sin inicializar constante SQLite3::Motor::Nativo::Motor::AP
de /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencias.rb:105:en const_missing'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/driver/native/driver.rb:76:in
abierto'
de /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/base de datos.rb:76:en `initialize'

Por cierto, me han Xcode instalado desde el CD de Snow Leopard.

¿Qué puedo hacer para solucionar el problema?

¿Fue útil?

Solución 2

Gracias por las respuestas. Esto es lo que hice para resolver el problema:

  1. reinstalación completa de ruby1.8.7 a / usr / local, ver aquí: http : //hivelogic.com/articles/ruby-rails-leopard

    Nota: readline no funcionaba cuando recompilar el rubí en mi mac, así que tuvo que construir eso también a partir de cero y asegúrese de añadir la opción --with-readline-dir para configurar:

      

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

  2. reinstalación completa del sqlite3 a / usr / local

  3. Reconstruir todas las gemas en el sistema con la gema sudo instalar XXX, incluyendo sqlite3-rubí. Esto sólo es necesario con gemas específicos de la plataforma, pero me pareció que era más rápido sólo para instalar todo en un oneliner:

      

    sudo gem install GEM1 GEM2 ... gemN --no-ri --no-rdoc

He intentado ir con ruby1.9 pero todo dejó de funcionar debido a la rotura de las dependencias de gemas y plugins, así que no recomendaría cambiar a menos que 1.9 está con ganas de depuración pesado y sé cómo restaurar su antiguo sistema!

Finalmente todo está funcionando de nuevo!

Otros consejos

Mi problema era ligeramente diferente, y de hecho no de las soluciones que se encontró en la línea-funcionó.

Cuando se intenta instalar sqlite3-ruby después de actualizar a Snow Leopard y Xcode 4.0 juicio, ha aparecido el mensaje

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'

Sin embargo se instaló sqlite3, y también volver a instalar no ayudó. Ya tenía la troub le antes con las versiones de 64 bits y universales, pero que había limpiado también. De hecho, podría trabajar con sqlite3.

Así joya instalar también debe decirle algo a lo largo de estas líneas:

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

Así cd a ese directorio y no buscan extconf.rb, la mía estaba en ./ext/sqlite3/extconf.rb He encontrado que Ruby era el registro para la biblioteca de la sqlite3 utilizando

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

Así que dispararon hasta IRB y comprueba por qué esto no funcionó:

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

Bueno, de hecho, esto funciona y mi rubí encontrar la biblioteca. ¿Por qué no funciona de la configuración? Inspección de extconf.rb mostró estrechamente la línea siguiente:

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

Cuando ejecuto esto en IRB:

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

Me sorprendentemente no encontrar la biblioteca más. De hecho, yo no entiendo cómo puede ser esto, pero eso es lo que sucede.

Así que esta es la cura: comentario la línea

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

en extconf.rb

Luego de /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.3.1 emití

 sudo ruby ./setup.rb

Esto fue a través sin problemas (probé antes de comentar el sqlite = línea, y no funcionó)

reiniciar la aplicación de rubí que tenía los problemas con SQLite. Funciona bien.

Espero que esto ayude a alguien.

helado

He encontrado algunas orientaciones sobre esto en el blog de Don Park en:

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

Sus puntos de solución de vuelta a desbordamiento de pila en el siguiente hilo:

Snow Leopard, sqlite3-ruby

La respuesta sobre el comando ln parece haber resuelto mi problema. Espero que le ayuda también.

Si la gema no está construyendo no es necesariamente porque se necesita para reconstruir sqlite3 de la fuente, sino para construir la gema que se requieren las bibliotecas de desarrollador sqlite3.

En la mayoría de los sistemas Linux / Unix puede instalarlos haciendo 'sudo apt-get install sqlite3-dev', sin embargo no estoy seguro de cómo funciona con MacPorts - pero asegúrese de que tiene ese paquete. Usted tiene que asegurarse de que estén en su camino o pasar la dir que están en al instalar la gema (ver la salida de la joya para indirectas en cuanto a las opciones para hacer eso).

He Sqlite3 se ejecuta en mi Mac muy bien, tanto con 1.8.7 y 1.9.1 actualizado ahora mi Ruby. Es posible que desee asegurarse de que tiene las herramientas Xcode Developer instalado también.

Para aquellos en Snow Leopard 64 y tener este problema de instalar este MacPort ha solucionado el problema para mí.

sudo port install rb-sqlite3 +universal
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top