Rails, MySQL y Snow Leopard


Actualicé a Snow Leopard usando el disco que obtuvimos en WWDC.

Intentar ejecutar algunas de mis aplicaciones rails ahora se queja de sql

    (in /Users/coneybeare/Projects/Ambiance/ambiance-server)
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
Importing all sounds in /Users/coneybeare/Projects/Ambiance/ambiance-sounds/Import 32/Compressed/

 -- AdirondackPeepers.caf
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
dlopen(/opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/libmysqlclient.16.dylib
  Referenced from: /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle
  Reason: image not found - /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle

(See full trace by running task with --trace)

Podría haber jurado que arreglé esto una vez antes. El problema es que

sudo gem install mysql

No funciona y da el error:

 Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.

/opt/local/bin/ruby extconf.rb install mysql
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no


Gem files will remain installed in /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/gem_make.out

¿Alguien ha conseguido que mysql funcione con rails en snow leopard? Si es así, ¿cuál es su configuración y mejor aún, ¿qué puedo hacer para reproducirlo?

Author: coneybeare, 2009-06-14

18 answers

Acabo de pasar por el mismo dolor... esto es lo que funcionó para mí:

  1. Descargue / instale MySQL de 64 bits 5.1.37 desde mysql.com
  2. ejecute los siguientes comandos:

    sudo gem update --system

    sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

También desinstalé todas las gemas mysql que flotaban alrededor de mis 10.5 días, que pueden hacerlo si lo anterior no funciona para usted:)

 108
Author: Ian Selby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-24 18:21:38

Reconstruir mysql como 64bit o instalar la versión de 64bit es importante, pero también debe asegurarse de construir las partes nativas de la gema mysql como 64bit también (esto no se aplica si está en uno de los macs Intel Core Duo originales).

Aquí está el comando mágico:

env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Debe establecer los ARCHFLAGS como se muestra arriba cada vez que realice una instalación de gema con componentes nativos en Snow Leopard.

 10
Author: Shebanator,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-28 05:25:39

Si está usando bundler, puede usar "bundle config" para establecer los argumentos de compilación adecuados para mysql de la siguiente manera:

bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
 7
Author: Steven Soroka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-23 18:30:27

Luché con esto durante mucho tiempo y finalmente lo conseguí trabajando en Snow Leopard. Terminé instalando Ruby, RubyGems y MySQL desde el código fuente (ver el tutorial Hivelogic para instalar Ruby y RubyGems. El tutorial de MySQL está enlazado en la parte inferior). Finalmente conseguí la gema para instalar, pero todavía estaba recibiendo

dyld: lazy symbol binding failed: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
  Expected in: flat namespace

dyld: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
  Expected in: flat namespace

Trace/BPT trap

Finalmente eliminé el mysql.bundle (no tengo idea de para qué es esto) y todo funcionó.

sudo rm -f /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle

Espero que eso ayude a alguien.

 6
Author: Sam Soffes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-06 21:10:26

He visto este problema muchas veces. casi cada vez que compilo mysql en una máquina. Creo que tienes que pasar tu mysqlconfig como parte del comando gem install.

sudo gem install mysql -- --with-mysql-config=/your/mysql/config

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/ruby
--with-mysql-config

Recuerde que necesita archivos de desarrollo mysql para poder construir esta gema.

 4
Author: Ryan Oberoi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-13 23:59:11

Estaba teniendo problemas para que mi configuración funcionara después de instalar snow leopard. Encontré MAMP en http://www.mamp.info y agrupa Apache, PHP y MySQL. instalarlo como una aplicación y simplemente funciona. Tal vez vale la pena darle una oportunidad, y es gratis.

Mesh

 2
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-14 10:50:36

Pensé que respondería mi propia pregunta aquí. Parece que el problema no está en mysql, sino en los enlaces mysql ruby. Me di cuenta de esto porque cuando conecté Querius (mi interfaz gráfica de usuario de mysql), fue capaz de conectarse.

Aquí está cómo construir desde el código fuente arreglar los enlaces:

cd /tmp
wget http://www.tmtm.org/en/ruby/mysql/ruby-mysql-0.2.6.tar.gz
tar xvfz ruby-mysql-0.2.6.tar.gz
cd ruby-mysql-0.2.6
./configure
make
sudo make install

Hay un montón de bibliotecas que tendré que construir a partir de la fuente en Snow Leopard y siguen apareciendo. MacPorts no parece estar lo suficientemente actualizado para todas las libs, así que voy a hacerlo en mi propio. Siguiente: freetype ( http://download.savannah.gnu.org/releases-noredirect/freetype/)

 1
Author: coneybeare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-14 04:19:37

Procedí como se explica en este post ( http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380 / ), y ahora todo funciona bien.

Recuerde buscar los errores tipográficos en su comando para instalar el controlador mysql.

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-15 12:39:13

Tuve este mismo problema y esto es lo que funcionó para mí.

  1. Instale Snow Leopard y el DMG MySQL de 64 bits.

  2. Crear /etc / my.cnf para apuntar a mi directorio de datos MySQL anterior (como se describe aquí) y ejecutar

    sudo mysql_upgrade.

  3. Abierto IRB y volver a instalar todas mis gemas usando (a través blog.costan.us/2009/07/rebuild-your-ruby-gems-if-you-update-to.html).

    `lista de gemas`.each_line {|line / system 'sudo gem install #{alinear.dividir.primero}'}

  4. Desinstalé las gemas MySQL que había instalado.

  5. Instalado MySQL gem con

    sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Con eso, todo parece estar funcionando hasta ahora. * knock wood *

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-28 22:38:54

En caso de que prefiera homebrew, en lugar de instalar MySQL manualmente.

Desinstala la gema mysql existente (si la hay):

 sudo gem uninstall mysql 

Localice el archivo 'mysql_config':

 find /usr -name 'mysql_config' 

Reinstalar mysql gem:

 sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/bin/mysql_config 

Nota: sustitúyase /usr/local/bin/ por la ruta mysql_config correspondiente que se encuentra en el paso 2. También en mi blog .

 1
Author: ohho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-17 03:47:25

Ian Selby muchas gracias pero tuve que quitar el sudo de delante de sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Estaba instalando en un conjunto de gemas y estoy usando rvm que creo que le pide que no use la palabra clave sudo. Muchas gracias.

 1
Author: Ricky McMillen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-04 00:41:43

Lo he resuelto de esta manera:

  1. después de instalar el archivo dmg de mysql
  2. compilación de configuración del paquete.mysql with with-mysql-config = /usr/local/mysql/bin/ / mysql_config
  3. env ARCHFLAGS= "- arch x86_64 "
  4. instalación del paquete
 1
Author: surajit dey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-29 13:28:36

Después de haber tenido un descanso de Rails durante varios años, acabo de pasar algún tiempo configurando mi entorno de desarrollo. Así que pensé en crear un tutorial sobre cómo instalar la última versión de Rails 3, MySQL y RVM en SnowLeopard, para ahorrar algo de tiempo a otros que están en mi posición.

Funciona a partir del 21 de agosto de 2011, utilizando Rails 3.0.10, MySQL 5.5.15 y RVM 1.7.2. Debería funcionar con future Rails 3.0.x, MySQL 5.5.x, y RVM 1.7.x versiones.

  1. Instale XCode si aún no está instalado. Usé 4.0.2. Desafortunadamente esto ha sido retirado por Apple, pero puede estar disponible en otro lugar en Internet. Versión 3.2.x es gratis para descargar desde Apple, pero no lo probé con este tutorial, probablemente también funciona.

  2. Instalar rvm:

    user$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
    
    user$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
    
    user$ source .bash_profile
    
  3. Instale una versión de Ruby (por ejemplo, 1.9.2) en rvm, las instrucciones básicas de uso son aquí.

    user$ rvm install 1.9.2
    user$ rvm use 1.9.2
    
  4. Cree un gemset para el ruby rvm instalado en el paso 2 (x es el número de versión).

    user$ rvm gemset create rails30x
    user$ rvm 1.9.2@rails30x
    
  5. Instale Rails 3.0.x (x es el número de versión).

    user$  gem install rails -v 3.0.x.
    
  6. Descargue e instale MySQL 5.5.x paquete, el elemento de inicio y el panel de preferencias. Los 3 están incluidos en el archivo de instalación de DMG. También instale MySQL WorkBench.

    Find/usr/local/mysql-version-name / support-files (insertar el nombre correcto del directorio MySQL) y editar mysql.servidor (con privilegios de root). Alrededor de la línea 46 localice las líneas que dicen:

    basedir=
    datadir=
    

    Y cámbialos a read (insertando el nombre correcto del directorio MySQL):

    basedir=/usr/local/mysql-version-name
    datadir=/usr/local/mysql-version-name/data
    

    Guarde el archivo. MySQL ahora se puede iniciar desde el panel preferencias.

    Para habilitar rails 3 para usar mysql, instale la gema mysql2 (consulte el siguiente paso). En primer lugar, tendrá que establecer el DYLD_LIBRARY_PATH para incluir el directorio de la biblioteca MySQL. Para hacer esto, edite su ~/.bash_profile en su carpeta de inicio e incluir lo siguiente (insertando el nombre correcto del directorio MySQL):

    export DYLD_LIBRARY_PATH=/usr/local/mysql-version-name/lib:$DYLD_LIBRARY_PATH
    

    Sin la inclusión del directorio en el DYLD_LIBRARY_PATH, un mensaje sobre no encontrar la biblioteca y el servidor abortaría.

  7. Instale la gema mysql2. (a partir de mayo de 2011, la versión 0.2.7 es la versión de trabajo más reciente con Rails 3.0.x).

    user$ gem install mysql2 -v 0.2.7 
    
  8. Crear una aplicación rails, y es correspondiente base de datos (appname_development).

    user$ rails new appname
    
  9. Añadir esto al Gemfile de la aplicación: gem 'mysql2', "0.2.7"

  10. Agregue esto a la base de datos de la aplicación.yml:

    development: 
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: appname_development
      pool: 5
      username: username
      password: pwd
      host: localhost
    
  11. Inicie la aplicación y marque "Acerca del entorno de su aplicación". Todo debería funcionar correctamente.

 1
Author: MikeD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-21 23:34:54

Las instrucciones para establecer ARCHFLAGS y pasar mysql mysql-config=... no parecía ser suficiente para resolver esto para mí en Snow Leopard. Además de hacer eso, agregué:

DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"

A mi perfil de bash, y esto lo resolvió para mí.

 1
Author: bratsche,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-28 03:21:04

Probé el truco archflags muchas veces con ligeras variaciones, pero nunca funcionó para mí.

Lo que finalmente hizo fue cambiar a la versión de ruby y gem instalada con snow leopard.

Había construido e instalado mi propia versión que ha funcionado para mí en todos los aspectos, excepto este. Dado que todo lo demás parece funcionar bien, no puedo evitar adivinar que el plugin de Mysql tiene algunas suposiciones funky en él. De todos modos, todo lo que hice fue cambiar / usr / bin para ser el primero en mi camino de nuevo. Había instalado ruby en /usr / local /ruby-1.8.7 y/usr/local / ruby-1.9.1 para poder cambiar fácilmente. Pensé en mencionarlo ya que la solución archflags parece funcionar para muchas personas,pero no para todos.

 0
Author: Ian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-02 08:00:15

Cambié el nombre del programa mysql_config de MYS MYSQL_HOME/bin a otra cosa para que el script de configuración del instalador de gemas no pueda encontrarlo. A pesar de que estaba usando la opción libs, el instalador de gemas siempre usó la configuración de compilación de mi instalación de mysql, que es binario fat. Pero la instalación predeterminada de ruby es solo x86_64 y por lo tanto la compilación de la gema falla. Después de cambiar el nombre del programa mysql_config el siguiente comando funcionó bien e instaló el gema:

sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-dir=/usr/local/mysql
 0
Author: cmittendorf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-04 13:10:00

Si está instalando la gema mysql con RVM, debe usar el siguiente código para instalarla

sudo env ARCHFLAGS="-arch x86_64" gem install mysql

Este método funcionó para mí en Leopard Server, ninguno de los anteriores funcionó

 0
Author: ganar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-19 23:43:00

Este artículo resolvió el problema para mí:)

Http://techliberty.blogspot.com/2009/12/dealing-with-rake-aborted-uninitialized.html

  • Antes de Leopard

    sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql

    • Leopard en una máquina PPC:

      sudo env ARCHFLAGS="-arch ppc" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

    • Leopard en una máquina Intel:

      sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

    • Snow Leopard (solo en Intel):

      sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

 0
Author: Bijan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-29 13:06:40