Я новичок в RoR, и я хочу развернуть свое следующее приложение на героку. Я хочу, чтобы моя среда разработки и тестирования соответствовала моей производственной среде для максимально плавного перехода. Таким образом, я приступил к установке postgresql в своей системе. Этот процесс был более чем разочаровывающим, и я запутался. Я следовал бесчисленным учебникам безрезультатно, и кажется, что у многих есть противоречивая информация. Вот что я знаю:
Есть много способов установить postgresql. Распространенными вариантами являются macports, homebrew, fink, Postgresql.app или enterpriseDB. После того, как вы установите один из предыдущих, вам нужно создать свое приложение rails и либо запустить:
rails new <app_name> -d postgresql
или запустите стандартный «rails new», а затем измените «sqlite3» на «pg» в вашем gemfile. Тогда, если я прав,вам действительно нужно создать свою собственную базу данных в строке команды -, выполнив это:
$ psql
$ CREATE DATABASE your_database_name;
Затем отредактируйте файл database.yml, чтобы он соответствовал примерно этому:
development:
adapter: postgresql
encoding: unicode
database: <your_database_name>
host: localhost
pool: 5
username: <username>
password:
Как только это будет сделано, все должно быть хорошо. Однако у меня проблемы. На самом деле он работает, используя описанный выше процесс, но я не понимаю, как он работает. В течение нескольких часов, пытаясь заставить все это работать, я установил macports, homebrew и postgresql.app. Однако всякий раз, когда я пытаюсь взаимодействовать с базой данных (, например, «rake db :migrate» )без запуска postgresql.app, я получаю эту ошибку:
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?
Если завожу обратно, то все нормально. Итак, это заставляет меня предположить, что моя система использует postgresql.app для запуска postresql. Обладая этой информацией, я уверенно удаляю macports и самодельные установки postgresql. Однако при этом я получаю эту ошибку при попытке взаимодействия с базой данных:
Library not loaded: /usr/local/lib/libpq.5.4.dylib (LoadError)
Я переустанавливаю macports и все равно получаю ту же ошибку. Затем я переустанавливаю доморощенный, и ошибка исчезает. Затем я снова удаляю macports, и все по-прежнему в порядке. Похоже, что postgresql.app и моя доморощенная установка каким-то образом зависят друг от друга. Если я прав, они должны работать независимо друг от друга, потому что каждый из них представляет собой полную установку postgreql. На данный момент у меня почти нет идей. Любой вклад в то, как этот процесс выполняется и что происходит, будет ОЧЕНЬ ЦЕНЕН.
РЕДАКТИРОВАТЬ
$ which psql
показывает:
/usr/local/bin/psql
и
ls -l /usr/local/bin/psql
показывает:
lrwxr-xr-x 1 robertquinn admin 35 Jul 29 17:32 /usr/local/bin/psql ->../Cellar/postgresql/9.1.4/bin/psql