我使用rails new app_name -d postgresql
创建了一个新的rails应用,但我没有使用任何rails命令(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 new app_name
命令创建rails应用时,我遇到完全相同的问题,并手动更改Gemfile
以使用pg gem
。
几周前我在ruby2上,我创建的应用程序工作正常。 Rails版本是3.2.13。
有什么想法吗?
更新:有趣的(至少对我而言)是我将应用程序部署到heroku并且在那里运行良好。现在,如果我运行rake db:create
一切似乎在本地工作正常(无需更改database.yml
文件中的任何内容)。也许这会让我的问题更清楚?
答案 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套接字”。