2013-03-09 57 views
0

我在windows上工作,有rails 3.2.12(剛升級)和ruby 2.0.0p0。當我試圖刪除一個控制器我得到這個錯誤:我試圖摧毀一個控制器時得到一個pg錯誤

F:\my apps\meshworks-redo> rails d controller Plans 
C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/pg-0.14.1-x86-mingw32/lib/pg.rb:10:in `require': cannot load such file -- 2.0/pg_ext (LoadError) 
     from C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/pg-0.14.1-x86-mingw32/lib/pg.rb:10:in `rescue in <top (required)>' 
     from C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/pg-0.14.1-x86-mingw32/lib/pg.rb:3:in `<top (required)>' 
     from C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.2/lib/bundler/runtime.rb:72:in `require' 
     from C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.2/lib/bundler/runtime.rb:72:in `block (2 levels) in require' 
     from C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.2/lib/bundler/runtime.rb:70:in `each' 
     from C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.2/lib/bundler/runtime.rb:70:in `block in require' 
     from C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.2/lib/bundler/runtime.rb:59:in `each' 
     from C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.2/lib/bundler/runtime.rb:59:in `require' 
     from C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.2/lib/bundler.rb:132:in `require' 
     from F:/my apps/meshworks-redo/config/application.rb:7:in `<top (required)>' 
     from C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/railties-3.2.12/lib/rails/commands.rb:24:in `require' 
     from C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/railties-3.2.12/lib/rails/commands.rb:24:in `<top (required)>' 
     from script/rails:6:in `require' 
     from script/rails:6:in `<main>' 

我試過重新安裝pg gem,沒有運氣。

+0

它只是刪除控制器,你的應用程序工作?至於我,我只是沒有啓動一個應用程序在與Ruby 2.0的Windows,同樣的錯誤。我想'pg' mingw預編譯版本預編譯爲1.9。 – khustochka 2013-03-09 18:38:13

+0

'rails s'返回以下錯誤:_無法在任何sources_中找到i18n-0.6.4,但安裝gem時 – 2013-03-09 18:49:50

+0

忽略了這是我的錯誤(在pik中有混合版本)。不,最終答案是,服務器被該文件加載阻止 – 2013-03-09 18:54:22

回答

2

我的一位朋友在Windows 7上使用Ruby 2.0與Postgres時遇到了同樣的問題。它不僅發生在試圖銷燬控制器時,而且發生在每個數據庫操作(包括rake db:create)時。問題在於,ruby 2.0沒有包含pg_ext.so文件。它包含1.9,但只是將其複製到2.0似乎不起作用。但是,我發現另一種方法來獲得正確的pg_ext.so。不完全確定這是爲什麼起作用,但對他有用。這裏是你需要做的:

  1. 轉到2.0/pg_ext.so(無法找到的文件)應該位於的文件夾。在你的情況C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/pg-0.14.1-x86-mingw32/lib/。
  2. 在這裏創建一個名爲'2.0'(不帶引號)的文件夾。
  3. 在此文件夾中,您將需要正確的pg_ext.so文件。您可以通過以下方式獲取:
  4. 手動安裝pg gem(「gem install pg」在控制檯中)。這將安裝gem的非x86-mingw32版本。它沒有解決問題,但它確實創建了正確的pg_ext.so。我認爲這是因爲它爲你的系統編譯pg gem,所以對於ruby 2.0。然後,您可以將此pg_ext.so文件與pg x86-mingw32版本一起使用。您將需要DevKit來編譯和安裝pg(http://rubyinstaller.org/add-ons/devkit/)。
  5. 轉至pg-0.14.1 gem文件夾中的pg_ext.so位置。在你的情況下,這將是C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/pg-0.14.1/lib。
  6. 從複製該文件夾到新PG-0.14.1-86-mingw32的/ lib目錄/ 2.0 /文件夾中的文件pg_ext.so在步驟2中
  7. 現在重試你的命令,並檢查是否一切正常。如果沒有,請刪除您的Gemfile.lock並重新運行軟件包安裝。
  8. 與其他mingw32寶石一樣,這個寶石也會出現同樣的問題。 IFor例如,我遇到了與bcrypt-rails gem相同的問題。按照上述相同的步驟解決了問題。我現在成功運行Windows 7上的Ruby 2.0。

Ps。如果您在Windows 7 64位上運行pg gem時遇到任何其他問題,請嘗試安裝Ruby(RubyInstaller)和postgresql的32位x86版本。此外,確保在路徑中包含Ruby文件夾(這是使用RubyInstaller安裝ruby 2.0時的一個選項)以及Postgresql lib和bin文件夾。

祝你好運!

+0

尼斯和徹底的解釋。現在停止嘗試在Windows機器上使用RoR;) – Arjan 2014-09-25 15:28:01

相關問題