2013-05-01 83 views
0

我創建了一個新的rails應用程序rails new app_name -d postgresql,我無法使用任何rails命令(rails s,rails g controller ControllerName等等)。我得到這些錯誤:Ruby 1.9.3-p392和PostgreSQL

/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命令並手動更改Gemfile使用pg gem

幾個星期前,我在ruby2和我創建的應用程序工作正常。 Rails版本是3.2.13。

任何想法?

更新:有趣的(至少對我來說)是我已經將應用程序部署到heroku,並且它在那裏運行良好。現在,如果我跑rake db:create一切似乎是工作的罰款在本地以及(無需在database.yml文件來改變任何東西)。也許這會讓我的問題更清楚?

+0

難道你運行'束install'? – 2013-05-01 17:28:07

+0

您是否記得將目錄更改爲您的項目目錄? – aceofbassgreg 2013-05-01 17:29:39

+0

@DaveS。我確實,是的。 – sebkkom 2013-05-01 17:32:54

回答

1

您可能需要在config/database.yml中指定socket參數來指定Postgres UNIX類型套接字的完整路徑,如果這是您正在使用的。它可能位於非標準位置。

我通常避免檢查config/database.yml到項目源代碼存儲庫,因爲它會導致與其他人相同的代碼庫具有不同的配置對工作的衝突。代之以包含database.yml.example作爲一個有用的模板。

添加host: localhost通常迫使TCP/IP連接,而不是效果,但這可能不會爲你工作。有時host: 127.0.0.1可以改爲工作,因爲localhost可能會被解釋爲「使用默認的UNIX套接字」。

+0

好的,所以加上'host:127.0.0.1'就可以解決它。但根據我的理解,這不是一個標準/建議解決方案。鑑於我對數據庫管理/配置的知識非常少,我如何找到套接字/如何修復位置? **(我用新的查找更新了這個問題)** – sebkkom 2013-05-01 18:03:54

+0

Heroku的默認位置可能有他們的Postgres套接字。如果你使用像Homebrew或MacPorts這樣的安裝程序,它可能會在Ruby適配器不知道的地方創建它。這裏最可靠的解決方案是找到你的Postgres套接字(如果有的話),並將其設置爲'socket'參數。可能是因爲某種原因,您的服務器沒有配置爲創建一個服務器。 – tadman 2013-05-01 19:56:09