2012-11-26 55 views
10

如果我跑rails s,我得到:Rails的迴歸:[BUG]分段故障

/Users/adam/.rvm/gems/ruby-1.9.3-p327/gems/pg-0.13.2/lib/pg_ext.bundle: [BUG] Segmentation fault 
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0] 

Abort trap: 6 

版本:

rails -v 
Rails 3.2.1 
ruby -v 
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0] 

爲什麼在錯誤消息中提到的紅寶石版本1.8.7如果我使用1.9.3

+0

你有正確的環境嗎?你運行'rvm use 1.9.3'嗎? – 2012-11-26 17:26:05

+0

'哪個rails'和'哪個ruby'的輸出是什麼? –

+0

夥計們,我剛剛重新安裝了rvm版本1.9.3,現在它的工作...... – user984621

回答

3

我有一個類似的問題,與bundle exec運行任何東西給分段錯誤:

~/mayapp >bundle exec rake -T 
/Users/rogermarlow/.rvm/gems/ruby-1.9.3-p327/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle: [BUG] Segmentation fault 
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0] 

Abort trap: 6 

我有(1)使用1.9.3p327代替1.9.3p125和(2)GEM_HOME環境變量指向兩個問題到一個現在不存在的目錄。所以對我來說修復是:

~/myapp >rvm list 

rvm rubies 

=* ruby-1.9.3-p327 [ x86_64 ] 

# => - current 
# =* - current && default 
# * - default 

~/myapp >rvm install 1.9.3-p125 
**snip** 
~/myapp >rvm use 1.9.3-p125 
Using /Users/rogermarlow/.rvm/gems/ruby-1.9.3-p125 
Running /Users/rogermarlow/.rvm/hooks/after_use_maglev 
~/myapp >echo $GEM_HOME 
/Users/rogermarlow/.rvm/gems/ruby-1.9.3-p125 
~/myapp ># you should check that the directory in $GEM_HOME exists, I had [email protected] which had been removed at some point 
~/myapp >bundle install 
**snip** 

現在嘗試bundle exec這是分割斷裂......

~/myapp >bundle exec rake -T 
rake about     # List versions of all Rails frameworks and the environment 
rake assets:clean   # Remove compiled assets 
rake assets:precompile  # Compile all the assets named in config.assets.precompile 
**snip** 
1

我不知道怎麼樣你的情況,我在安裝Ruby 1.8.7之前測試一個較老的項目,然後我切換到我當前的rails項目文件夾,在那裏我有一個.rvmrc文件,將我的gemset設置爲[email protected]。我的紅寶石和鋼軌版本是正確的(1.9.3,3.2.12),但顯然Postgres仍然嘗試使用1.8.7。並有你提到的同樣的錯誤。

我的解決辦法:

1/ cd out of the current folder project with the .rvmrc file 
2/ rvm use 1.9.3 --default 

然後我又回到了我目前的Rails項目跑捆綁更新PG,爲了以防萬一,我不知道是否真的有任何影響,並且瞧,一切正常!

12

它看起來像您最初安裝它時針對Ruby 1.8.7編譯的pg gem。只需運行gem uninstall pg; gem install pg應該針對Ruby 1.9.3重新編譯它。

如果您還不是,我會建議使用RVM來避免這種問題。

+0

謝謝@davogones這真的幫助。當我將應用程序遷移到postgres時,我仍然停留了一段時間。試過所有其他選項,直到我到了這裏。我將我的應用程序從Ruby 2移至1.9.3(在rvm上配置了應用程序),但仍然通過相同的異常「rails db」命令。 「軟件包更新」命令也沒有幫助。所以,正如你所提到的,我擺脫了安裝的pg軟件包,然後再次安裝它。非常感謝。 –