Stanmx

Buscando la accesibilidad

Como instalar la gema de MySQL

Publicado en ruby-on-rails el 21/11/09 a las 02:08 pm

Tengo una semana experimentando en el mundo Ruby on Rails y ya me di el primer banquetazo.

Instale el dmg de MySQL 5.1.41 para Mac OS X 10.5 (x86) corrí el servidor de MySQL desde mi System Preferences y posteriormente me fui a la Terminal a intentar hacer un:

sudo gem install mysql

Me lanzo error, estuve googleando un rato e intente varias opciones sin éxito. Parece que tiene que ver con los paths pero despues de varios intentos creo que ya debo tener un buen licuado.

Sugerencias, links, soluciones, todas son bienvenidas ¡Gracias, buen fin de semana!

Post relacionados

19 comentarios

Jorge Cocompech

dijo el 21/11/09 a las 02:11 pm

Se supone que Mac OS X ya corre RonR sin broncas.
¿Ya checaste los docs de la página de Apple?

Saludos

Jorge Cocompech

dijo el 21/11/09 a las 02:15 pm

http://developer.apple.com/tools/rubyonrails.html
http://developer.apple.com/Tools/developonrailsleopard.html
http://wiki.rubyonrails.org/getting-started/installation/mac

Espero poder ayudar más ...
Saludos

Stan

dijo el 21/11/09 a las 03:30 pm

@jorge ruby corre bien, de hecho ya hice unos pequeños controladores y vistas, y tengo instalado un sistema de base de datos llamado sqlite 3.

Sin embargo me interesa hacer ejemplos con MySQL y es ahi donde no he tenido exito por que no logro hacer que las gemas de mysql se instalen correctamente. Me aparecen errores en su instalacion.

Stan

dijo el 21/11/09 a las 08:54 pm

@jorge lo resolvi, mañana publico los pasos.

Stan

dijo el 21/11/09 a las 11:10 pm

parece que si se instalo, pero no de manera correcta. Seguire investigando.

Stan

dijo el 21/11/09 a las 11:42 pm

Estanislao-Vizcarras-MacBook:music_library stan$ sudo gem install mysql
Building native extensions. This could take a while...
Successfully installed mysql-2.8.1
1 gem installed
Installing ri documentation for mysql-2.8.1...

No definition for next_result

No definition for field_name

No definition for field_table

No definition for field_def

No definition for field_type

No definition for field_length

No definition for field_max_length

No definition for field_flags

No definition for field_decimals

No definition for time_inspect

No definition for time_to_s

No definition for time_get_year

No definition for time_get_month

No definition for time_get_day

No definition for time_get_hour

No definition for time_get_minute

No definition for time_get_second

No definition for time_get_neg

No definition for time_get_second_part

No definition for time_set_year

No definition for time_set_month

No definition for time_set_day

No definition for time_set_hour

No definition for time_set_minute

No definition for time_set_second

No definition for time_set_neg

No definition for time_set_second_part

No definition for time_equal

No definition for error_errno

No definition for error_sqlstate
Installing RDoc documentation for mysql-2.8.1...

No definition for next_result

No definition for field_name

No definition for field_table

No definition for field_def

No definition for field_type

No definition for field_length

No definition for field_max_length

No definition for field_flags

No definition for field_decimals

No definition for time_inspect

No definition for time_to_s

No definition for time_get_year

No definition for time_get_month

No definition for time_get_day

No definition for time_get_hour

No definition for time_get_minute

No definition for time_get_second

No definition for time_get_neg

No definition for time_get_second_part

No definition for time_set_year

No definition for time_set_month

No definition for time_set_day

No definition for time_set_hour

No definition for time_set_minute

No definition for time_set_second

No definition for time_set_neg

No definition for time_set_second_part

No definition for time_equal

No definition for error_errno

No definition for error_sqlstate
Estanislao-Vizcarras-MacBook:music_library stan$

Stan

dijo el 21/11/09 a las 11:43 pm

Estanislao-Vizcarras-MacBook:music_library stan$ rake db:migrate
(in /Users/stan/Sites/music_library)
rake aborted!
uninitialized constant MysqlCompat::MysqlRes

(See full trace by running task with --trace)
Estanislao-Vizcarras-MacBook:music_library stan$

Gustavo Barrón

dijo el 23/11/09 a las 12:26 am

¿Supongo aun no migras a Snow Leopard? Como parece ser que estas en Leopard aun, solo tienes que poner en tu terminal.

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

Stan

dijo el 23/11/09 a las 11:52 am

@gustavo de hecho estoy en snow leopard.

Gustavo Barrón

dijo el 23/11/09 a las 03:14 pm

Vayamos por partes:

1. sudo gem uninstall mysql
2. Desinstala MySQL
3. Instala MySQL Mac OS X 10.5 (x86_64)
3a. Si tienes datos en tu mysql, lo que puedes hacer es copiar la carpeta /usr/local/mysql-versionviejamysql/data a /usr/local/mysql/data
4. Una vez instalado simplemente le darás en la terminal:

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

Deberías tener un MySQL funcional en ruby

Pasos opcionales, para rulear en Snow Leopard:

5. sudo gem install passenger
6. sudo passenger-install-apache2-module
7. Instala Passenger Pref de http://www.fngtps.com/files/2/2009/09/PassengerPane-1.3.tgz

8. Ahora tendrás un entorno de desarrollóo para ruby fácil de usar, solo entra al Passenger en el System Preferences y indica donde vive tu proyecto (la carpeta public), define un dominio, tipo miproyecto.local, indica entorno (development generalmente) y corre a tu navegador con ese dominio que has definido previamente, y asombrese de a) un error de passenger o b) una aplicacion funcionando como si fuera php sin tanta complicacion :)

Stan

dijo el 23/11/09 a las 03:21 pm

@gustavo gracias, probare los pasos que me indicas y te aviso como me fue.

Mario A Chavez

dijo el 23/11/09 a las 06:36 pm

Stan;

Para instalar mysql con soporte para ruby, solo es necesario realizar dos pasos, pero antes de poder realizarlos hay que eliminar cualquier otra instalacion previa para evitar conflictos.

Limpieza
sudo gem remove mysql
sudo rm -fr /usr/local/mysql

El primer comando elimina la gema de rails, el segundo elimina instalaciones previas de mysql - nota esto no afecta a tu instalacion de MAMP -

Instalacion de MySQL
Una vez limpia la maquina, puedes reiniciar o no, procede a descargar MySql 5.1.41 X86_64 y sigue las instrucciones del dmg para instalar MySQL, esto aparte de instalar el servidor va a instalara un nuevo panel de preferencias para controlar el inicio de MySQL.

http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.41-osx10.5-x86_64.dmg/from/pick

Comprobacion de la instalacion
Una vez instalado, segura de que en el panel de preferencias el MySQL este activo - o iniciado - y en la terminal teclea lo siguiente para iniciar una nueva sesion:

mysql -uroot

Si recives el mensaje:

Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.1.41 Source distribution
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql>

Quiere decir que todo salio bien, ahora puedes salir de esa sesion y en la misma terminal procedemos a instalara la gema de MySQL.

Instalacion de Gema
En la terminal ejecutamos el siguiente comando para instalar la gema de MySQL, debido a que desde hace algunos meses la gema se rescribio en C, en lugar de la gema anterior que estaba escrita en Ruby, esta instalacion requiere de compilar algunas librerias para que funcione correctamente:

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

Dado que ya estas en Leopard en teoria no es necesario especificar ningun otro flag, unicamente con indicarle a la gema donde esta la instalacion de MySQL debe de ser suficiente.

Comprobar instalacion de gema de MySQL
Hay que editar el archivo database.yml de tu proyecto MySQL con los paramteros correctos para MySQL los cuales deben de ser:
adapter: mysql
encoding: utf8
database: mydatabase
pool: 5
username: root
password:
socket: /tmp/mysql.sock

Donde database debe de apuntar a una base de datos de MySQL y username/password deben de ser los indicados para acceder a esa DB. Aqui hay informacion oficial de Rails al respecto: http://wiki.rubyonrails.org/database-support/mysql

Ahora si puedes trata de ejecutar rake db:migrate y esperar a que todo funcione.

Comentarios finales.
Desde que cambiaron la gema de MySQL de Ruby a C, ha habido un poco de complicaciones para tenerla funcionando bien, es por eso que yo te sugeri desde un principio usar SQLite, pero decidiste tomar otro camino, ya que SQLite es super facil de configurar y usar, ademas de que no tiene una necesidad de recursos como MySQL.

Sobre la sugerencia de Gustavo Barrón de instalar Apache/Passenger no esta mal, pero igual para la maquina de desarrollo no le veo mucho el caso, esa desde mi punto de vista muy personal, es una configuracion requerida para cuando vas a realizar el deploy de la app, para desarrollo local, pues no le veo mucho sentido mas alla de aprender como configurarlos.

Mario A Chavez

dijo el 23/11/09 a las 06:42 pm

Por ultimo, su deseas compilar MySQL desde el fuente este tutorial para Snow Leopard esta bueno http://hivelogic.com/articles/compiling-mysql-on-snow-leopard/

Stan

dijo el 23/11/09 a las 08:53 pm

@Mario fue toda una aventura desinstalar MySQL de Mac, sin embargo lo desinstale, limpie y volvi a instalar, hice todos los pasos que mencionaste pero al final de nuevo al momento de hacer el rake me marco el error:

Estanislao-Vizcarras-MacBook:music_library stan$ rake db:migrate
(in /Users/stan/Sites/music_library)
rake aborted!
uninitialized constant MysqlCompat::MysqlRes

(See full trace by running task with --trace)
Estanislao-Vizcarras-MacBook:music_library stan$

Stan

dijo el 23/11/09 a las 09:04 pm

Una vez hechos los pasos que suguiere @mario corri la siguiente linea que menciono @gustavo

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

Y por fin hizo el rake, ahora a seguir con mi tutorial, gracias muchachos!

Mario A Chavez

dijo el 24/11/09 a las 07:42 am

@stan que bien que ya quedo, releyendo mi post al final parece que te estoy regañando a ti y a Gustavo Barrón, sorry no fue mi intención.

Por otro lado, sobre la bandera de arch, yo por aca no la necesite para compilacion de 64 bits de mysql, al igual que tu tengo SL.

Stan

dijo el 24/11/09 a las 08:10 am

@mario ningun regaño, gracias, toda esta experiencia me ha hecho conocer algunas lineas adicionales para utilizar en la terminal con Ruby on Rails.

Ayer por fin hice mi primer Scaffold, ahora adentrarse en lo que sigue. Cuando me llegue el libro de Ruby imagino que utilizare sqlite.

Jorge Cocompech

dijo el 24/11/09 a las 10:39 am

@Gustavo Barrón: Eres una de las deidades del Deux-Machine de la Matrix.
@Stanmx: Ponte el tutorial paso a paso.

Stan

dijo el 24/11/09 a las 02:53 pm

@Jorge estaria bien, por lo pronto necesito terminarlo para dar bien mis impresiones :P

Aporta tu comentario

Tu Email no sera publicado.

Opcional.