Ruby 1.9.3-p392和PostgreSQL

时间:2013-05-01 17:22:44

标签: ruby-on-rails ruby postgresql pg

我使用rails new app_name -d postgresql创建了一个新的rails应用,但我没有使用任何rails命令(rails srails 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 new app_name命令创建rails应用时,我遇到完全相同的问题,并手动更改Gemfile以使用pg gem

几周前我在ruby2上,我创建的应用程序工作正常。 Rails版本是3.2.13。

有什么想法吗?

更新:有趣的(至少对我而言)是我将应用程序部署到heroku并且在那里运行良好。现在,如果我运行rake db:create一切似乎在本地工作正常(无需更改database.yml文件中的任何内容)。也许这会让我的问题更清楚?

1 个答案:

答案 0 :(得分:1)

您可能需要在socket中指定config/database.yml参数,以指定Postgres UNIX类型套接字的完整路径(如果您正在使用它)。它可能位于非标准位置。

我通常会避免将config/database.yml检入项目源存储库,因为它会导致与使用不同配置的相同代码库的其他人发生冲突。包含database.yml.example作为有用的模板,以便开始使用。

添加host: localhost通常具有强制TCP / IP连接的效果,但这可能不适合您。有时候host: 127.0.0.1会起作用,因为localhost可能会被解释为“使用默认的UNIX套接字”。