2013-07-26 60 views
0

我是Ruby on Rails的新手。我在我的Windows 8系統上安裝了Rails 4,並安裝了DevKit,並安裝了(PostgreSQL)gem。Rails應用程序無法識別postgres gem

> gem install pg 
... 
Successfully installed pg-0.16.0-x64-mingw32 

我創建了一個新的Rails應用程序:

> rails new blog -d postgresql 

但是當我開始軌服務器

> cd blog 
> rails server 

並導航到我的瀏覽器localhost:3000,我看到這個錯誤:

Gem::LoadError Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile.

我的Gemfile包括這些行:

# Use postgresql as the database for Active Record 
gem 'pg' 

此外,如果我做

bundle install 

PG輸出沒有列出。

如果我在Ruby控制檯執行

require 'pg' 

我得到

=> true 

這個問題是非常相似的

Rails 4 postgres bug - cannot create database because the pg gem "is missing", but it is not

,但在這種情況下,提問者意識到他正在使用舊版本的pg gem。我有與gem install pg一起安裝的版本,我認爲這是最新版本。

任何人都可以提供一些故障排除指導?

更新:

從@vinodadhikary我試圖bundle update pg

評論其返回

Fetching gem metadata from https://rubygems.org/........... 
Fetching gem metadata from https://rubygems.org/.. 
Resolving dependencies... 
Using rake (10.1.0) 
... 
Your bundle is updated! 

不提皮克。

我又試圖bundle show pg,這又回到

Could not find gem 'pg'. 
Did you mean pg? 

我試圖運行的服務器,並獲得了同樣的錯誤。

更新2

我按我的現有Postgres數據庫配置我config\database.yml文件,像

development: 
    adapter: postgresql 
    encoding: unicode 
    database: rails_dev 
    pool: 5 
    username: postgres 
    password: [password] 
    host: localhost 
    port: 5433 

,同樣也測試生產。 感謝Artiwarah Damrongchai提出的建議。

+0

疑難解答:嘗試'捆綁更新pg'並檢查'捆綁顯示pg' – vee

+0

感謝vinodadhikary,我嘗試過,並用**更新**結果編輯了問題。 –

回答

3

感謝來自Andy Henson一些幫助上#RubyOnRails IRC我能解決這個問題,或者至少解決它。

看起來好像問題可能出在bundler標識由DevKit提供的minGW構建環境的32位和64位版本。這裏有一個優秀的錯誤,看起來相關:

https://github.com/bundler/bundler/issues/2356

但我可以通過使用64位的一切使用32bit的一切交換來解決它。這裏是我的步驟:

我卸載了64位Ruby。然後從http://rubyinstaller.org/downloads/我安裝

  • ruby​​installer-2.0.0-p247.exe
  • 的devkit-mingw64-32-4.7.2-20130224-1151-sfx.exe

然後我安裝了一個Postgres的到C的32位版本:\的PostgreSQL \ 9.2

然後我安裝使用PG寶石

subst X: "C:\PostgreSQL\9.2" 
gem install pg -- --with-pg-dir=X: 
subst X: /D 

(該subst命令是矯枉過正,在這種情況下,因爲有在Postgres的路徑沒有空格,但它是一個很好的把戲知道的其他情形。)

然後在我的應用程序主機目錄我跑rails new blog -d postgresql,和編輯我的conf\database.yml文件根據我的postgres設置。這似乎解決了它。

0

也許你需要配置你的database.yml文件是這樣的:


development: &default 
    adapter: postgresql 
    host: localhost 
    encoding: unicode 
    database: your_database 
    username: your_username 
    password: your_password 
    pool: 5 
    timeout: 5000 
+0

謝謝Artiwarah,我確實爲我現有的postgres數據庫配置了我的'database.yml'文件。我已更新我的問題以反映這一點。 –

相關問題