2012-11-26 3 views
10

Si je cours rails s, je reçois:Rails: [BUG] Segmentation fault

/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 

Versions:

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

Pourquoi dans le message d'erreur mentionné la version rubis 1.8.7 si j'utilise 1.9.3?

+0

Avez-vous l'environnement correct? Avez-vous exécuté 'rvm use 1.9.3'? –

+0

Quelle est la sortie de «quels rails» et «quel ruby»? –

+0

Les gars, je viens de réinstaller la version 1.9.3 rvm et maintenant il fonctionne ... – user984621

Répondre

3

J'ai eu un problème similaire, quoi que ce soit en cours d'exécution avec bundle exec a donné une erreur de segmentation:

~/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 

J'ai eu deux problèmes (1) à l'aide 1.9.3p327 au lieu de 1.9.3p125 et (2) environnement GEM_HOME variable pointant à un répertoire maintenant inexistant. Ainsi, la solution pour moi était:

~/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** 

Essayez maintenant que bundle exec qui a été la segmentation ... reprochent

~/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

Je ne sais pas comment votre situation, j'installe Ruby 1.8.7 avant pour tester un projet plus ancien, je suis passé à mon dossier de projet rails actuel, où j'ai un fichier .rvmrc définissant ma gemset à [email protected] Mes versions rubis et rails étaient correctes (1.9.3, 3.2.12), mais apparemment, Postgres essayait encore d'utiliser 1.8.7. et ayant la même erreur que vous avez mentionné.

Ma solution:

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

Puis je suis revenu à mon projet en cours de rails couru mise à jour pg paquet, juste au cas où, je ne sais pas si cela vraiment eu aucun effet, et le tour est joué, tout fonctionne !

12

Il semble que votre pg gem ait été compilé avec Ruby 1.8.7 lors de son installation initiale. Simplement en cours d'exécution gem uninstall pg; gem install pg devrait le recompiler contre Ruby 1.9.3.

Si ce n'est pas déjà fait, je recommanderais d'utiliser RVM pour éviter ce genre de problème.

+0

Merci @davogones qui a vraiment aidé. Je suis resté un moment quand j'ai migré mon application vers postgres. Je ai essayé toutes les autres options jusqu'à ce que je suis arrivé ici. J'ai déplacé mon application de Ruby 2 à 1.9.3 (application configurée sur rvm) mais toujours la commande 'rails db' par la même exception. La commande 'bundle update' n'a pas aidé non plus. Donc, comme vous l'avez mentionné, je me débarrasse du paquet pg installé, puis je l'installe à nouveau. Merci beaucoup. –