Un problema frecuente que nos podemos encontrar al hacer un depliegue de una aplicación RoR es el siguiente:

Nada más lanzar la pertinente migración nos encontramos con:

rake aborted!
No such file or directory – /sock


Su equivalente conectándonos con el cliente mysql sería:

“Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ “

Este error puede dejarnos confusos durante algún tiempo pero sin embargo tiene fácil solucion:

En algunas versiones de MySQL podremos ejecutar desde la línea de comandos el comando mysql_config con algunos parámetros, en este caso nos interesa –socket, nos dará la ruta del fichero.
#mysql_config –socket
/tmp/mysql.sock

Si no disponemos del comando mysql_config tendremos que mirar en el fichero my.cnf, su localización varía pero lo habitual es encontrarlo en alguno de estos directorios:

  • /etc
  • /etc/mysql
  • /usr/local/etc
  • /usr/local/etc/mysql

Una vez tengamos la ruta del socket modificaremos la configuración de nuestro fichero config/database.yml añadiendo en los bloques necesarios la siguiente línea:

socket: /tmp/mysql.sock
De modo que por ejemplo nuestra base de datos de desarrollo quedaría:

development:
adapter: mysql
database: database
username: user
password: secret
host: localhost
socket: /tmp/mysql.sock

Ahora podremos lanzar de nuevo la migración.