Ruby 1.9.3-p392 и PostgreSQL

Я создал новое приложение с рельсами rails new app_name -d postgresql и я не могу использовать любую команду рельсы (rails s, rails g controller ControllerNameи тд и тп). Я получаю эти ошибки:

/Users/sebkomianos/.rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.13/lib/active_record/connection_adapters/postgresql_adapter.rb:1216:in ``initialize': could not connect to server: No such file or directory (PG::Error)

Это мое database.yml файл:

development:
  adapter: postgresql
  encoding: unicode
  database: project_development
  pool: 5
  username: project
  password:`

test:
  adapter: postgresql
  encoding: unicode
  database: project_test
  pool: 5
  username: project
  password:`

production:
  adapter: postgresql
  encoding: unicode
  database: project_production
  pool: 5
  username: project
  password:`

У меня точно такая же проблема, когда я создаю приложение rails со стандартным rails new app_name команда и вручную изменить Gemfile использовать pg gem,

Пару недель назад я был на ruby2, и созданное мною приложение работало нормально. Версия Rails - 3.2.13.

Есть идеи?

ОБНОВЛЕНИЕ: забавно (по крайней мере для меня) то, что у меня есть приложение, развернутое на heroku, и оно прекрасно работает там. Теперь, если я бегу rake db:create кажется, что все работает хорошо и локально (не нужно ничего менять в database.yml файл). Может быть, это делает мою проблему более ясной?

1 ответ

Решение

Вам может понадобиться указать socket аргумент в вашем config/database.yml указать полный путь к сокету Postgres UNIX-типа, если это то, что вы используете. Это может быть в нестандартном месте.

Я обычно избегаю проверок config/database.yml в исходный репозиторий проекта, поскольку это вызывает конфликты с другими людьми, работающими с той же кодовой базой, которые имеют разные конфигурации. Включить database.yml.example в качестве полезного шаблона, чтобы начать вместо этого.

Добавление host: localhost обычно вместо этого используется принудительное подключение TCP/IP, но это может не сработать. Иногда host: 127.0.0.1 работает вместо, как localhost может интерпретироваться как "использовать сокет UNIX по умолчанию".

Другие вопросы по тегам