2012-07-30 20 views
9

Soy bastante nuevo en RoR y estoy buscando implementar mi próxima aplicación en heroku. Quiero que mi entorno de prueba de desarrollo & coincida con mi entorno de producción para la transición más suave. Como tal, fui instalando postgresql en mi sistema. Este proceso ha sido más que frustrante y estoy más allá de lo confuso. Seguí innumerables tutoriales en vano y parece que muchos tienen información conflictiva. Esto es lo que sé:Postgresql.app vs Homebrew

Hay muchas formas de instalar postgresql. Las opciones comunes son macports, homebrew, fink, Postgresql.app o enterpriseDB. Una vez que instale uno de los anteriores, tiene que crear su aplicación rieles y, o bien ejecutar:

rails new <app_name> -d postgresql 

o ejecutar el estándar 'carriles de nuevo' y luego cambiar 'sqlite3' a 'pg' en su Gemfile. Entonces, si estoy en lo correcto, en realidad se tiene que crear su propia base de datos en la línea de comandos al hacer esto:

$ psql 
$ CREATE DATABASE your_database_name; 

a continuación, editar su database.yml seguir algo parecido a esto:

development: 
    adapter: postgresql 
    encoding: unicode 
    database: <your_database_name> 
    host: localhost 
    pool: 5 
    username: <username> 
    password: 

Una vez hecho esto, todo debería estar bien. Sin embargo, estoy teniendo problemas. De hecho, lo tengo trabajando usando el proceso anterior, pero no estoy seguro de cómo se está ejecutando. Durante horas tratando de hacer que todo esto funcione, instalé macports, homebrew y postgresql.app. Sin embargo, cada vez que intento para interactuar con la base de datos (como un 'rake db: migrate') sin postgresql.app correr, me sale este error:

could not connect to server: Connection refused 
    Is the server running on host "localhost" (::1) and accepting 
    TCP/IP connections on port 5432? 
could not connect to server: Connection refused 
    Is the server running on host "localhost" (127.0.0.1) and accepting 
    TCP/IP connections on port 5432? 
could not connect to server: Connection refused 
    Is the server running on host "localhost" (fe80::1) and accepting 
    TCP/IP connections on port 5432? 

Si enciendo una copia de seguridad, todo está bien. Ok, eso me lleva a suponer que mi sistema está usando postgresql.app para ejecutar postresql. Con esa información, desinstalo con confianza las instalaciones macros y hombrew de postgresql. Sin embargo, al hacerlo, me sale este error cuando se trata de interactuar con la base de datos:

Library not loaded: /usr/local/lib/libpq.5.4.dylib (LoadError) 

reinstalo macports y aún obtener el mismo error. Luego reinstalo homebrew y el error desaparece. Luego desinstalo macports de nuevo y todo sigue estando bien. Parece que postgresql.app y mi instalación homebrew dependen de alguna manera el uno del otro. Si estoy en lo correcto, deberían poder ejecutarse independientemente el uno del otro porque cada uno es una instalación completa de postgreql. A estas alturas ya no tengo ideas. Cualquier y toda la información sobre cómo se hace este proceso, qué es lo que está sucediendo sería MUY APRECIADO.

EDITAR

$ which psql 

muestra:

/usr/local/bin/psql 

y

ls -l /usr/local/bin/psql 

shows:

lrwxr-xr-x 1 robertquinn admin 35 Jul 29 17:32 /usr/local/bin/psql -> ../Cellar/postgresql/9.1.4/bin/psql 
+1

Mi conjetura es su servidor postgres está ejecutando bajo postgres.app, pero sus trayectorias de línea de comandos están apuntando a los ejecutables homebrew ? ¿Qué muestra 'which psql'? Y luego 'ls -l' ese camino – house9

+0

los agregó en una edición – flyingarmadillo

+1

Cellar es donde homebrew se instala, puede intentar agregar postgres.app a su ruta, vea http://postgresapp.com/documentation – house9

Respuesta

5

Homebrew es definitivamente el camino a seguir. Después de años de usar Macports, encuentro Homebrew mucho más fácil de usar, actualizar y mantener.

Si eres nuevo en Homebrew, a veces, cuando instalas algo, habrá una salida impresa al final de la instalación que te brinda tareas adicionales.A veces, la instalación le pide que cree nuevos enlaces manualmente, a veces le pide que vuelva a hacer enlaces con los nuevos archivos ejecutables ubicados en el sótano. Asegúrese de leer esa salida y seguir esas instrucciones después de la instalación.

Una vez que se sigan esas instrucciones, abra una nueva ventana de terminal para asegurarse de que se respeten sus configuraciones.

Además, si usa rails new app_name -D postgresql, su archivo database.yml ya debería estar configurado correctamente, a menos que, por supuesto, haya configurado su instancia de postgres para usar un nombre de usuario y contraseña.

Para facilitar el arranque y la parada postgres más fácil, he añadido estos comandos para mi archivo .profile

# postgres 
alias pg_start="pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start" 
alias pg_stop="pg_ctl -D /usr/local/var/postgres stop -s -m fast" 
+0

¿Puede uno de ustedes publicar lo que realmente hizo para resolver esto? Estoy exactamente en el mismo lugar que @flyingarmadillo – ajbraus

+0

@ajbraus ¿dónde estás teniendo problemas? los comandos anteriores a los que aliased son los comandos para iniciar y detener postgres. para empezar, escribiría (en su terminal) 'pg_ctl -D/usr/local/var/postgres -l /usr/local/var/postgres/server.log start'. ¿Esto tiene sentido? – sorens

+0

Lo entiendo: servidor comenzando sh: /usr/local/var/postgres/server.log: No existe dicho archivo o directorio –