Postgresql.app vs Homebrew

9

Sou muito novo no RoR e estou procurando implantar meu próximo aplicativo no heroku. Eu quero meu desenvolvimento & amp; ambiente de teste para corresponder ao meu ambiente de produção para a transição mais suave. Como tal, fui instalar o postgresql no meu sistema. Este processo foi mais do que frustrante e estou além de confuso. Eu segui inúmeros tutoriais sem sucesso e parece que muitos têm informações conflitantes. Aqui está o que eu sei:

Existem várias maneiras de instalar o postgresql. As opções comuns são macports, homebrew, fink, Postgresql.app ou enterpriseDB. Depois de instalar um dos anteriores, você deve criar seu aplicativo rails e executar:

rails new <app_name> -d postgresql

ou execute o padrão 'rails new' e depois mude 'sqlite3' para 'pg' no seu gemfile. Então, se eu estiver correto, você realmente terá que criar seu próprio banco de dados na linha de comando fazendo isso:

$ psql
$ CREATE DATABASE your_database_name;

Em seguida, edite seu database.yml para seguir algo próximo a isso:

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

Uma vez feito isso, tudo deve estar bem. No entanto, estou com problemas. Eu realmente tenho que trabalhar usando o processo acima, mas estou confuso sobre como está sendo executado. Durante horas tentando fazer tudo isso funcionar, eu instalei o macports, homebrew e postgresql.app. No entanto, sempre que tento interagir com o banco de dados (como o 'rake db: migrate') sem o postgresql.app em execução, recebo este erro:

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?

Se eu disparar de volta, tudo está bem. Ok, isso me leva a supor que meu sistema está usando o postgresql.app para executar o postresql. Com essa informação, eu confiro com segurança as instalações de macports e homebrew do postgresql. No entanto, ao fazer isso, recebo esse erro ao tentar interagir com o banco de dados:

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

Eu reinstalei macports e ainda recebo o mesmo erro. Então eu reinstalei o homebrew e o erro desapareceu. Eu então desinstale o macports novamente e tudo ainda está bem. Parece que postgresql.app e minha instalação homebrew são de alguma forma dependentes uns dos outros. Se eu estiver correto, eles devem ser capazes de executar independentemente uns dos outros, porque cada um é uma instalação completa do postgreql. Eu estou praticamente sem idéias neste momento. Toda e qualquer entrada sobre como este processo é feito, o que está acontecendo, seria MUITO APRECIADO.

EDITAR

$ which psql

mostra:

/usr/local/bin/psql

e

ls -l /usr/local/bin/psql

mostra:

lrwxr-xr-x  1 robertquinn  admin  35 Jul 29 17:32 /usr/local/bin/psql -> ../Cellar/postgresql/9.1.4/bin/psql 
    
por flyingarmadillo 30.07.2012 в 02:53
fonte

1 resposta

5

O Homebrew é definitivamente o caminho a percorrer. Depois de anos usando o Macports, acho o Homebrew muito mais fácil de usar, atualizar e manter.

Se você é novo no Homebrew, às vezes quando você instala algo, haverá uma saída impressa no final da instalação que lhe dará tarefas adicionais. Às vezes, a instalação solicita que você crie manualmente novos links; às vezes, ele solicita que você refaça os links com os novos executáveis localizados na adega. Certifique-se de ler essa saída e siga as instruções após a instalação.

Depois que essas instruções forem seguidas, abra uma nova janela de terminal para garantir que suas configurações sejam respeitadas.

Além disso, se você usar rails new app_name -D postgresql , seu arquivo database.yml já deverá estar configurado corretamente, a menos que você tenha configurado sua instância postgres para usar um nome de usuário e senha.

Para tornar mais fácil iniciar e interromper os postgres, adicionei esses comandos ao meu .profile file

# 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"
    
por sorens 05.08.2012 / 18:13
fonte