Rails s return: [BUG] Ошибка сегментации

Если я запустил rails s, я получаю:

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

Ответ 1

Похоже, что ваш pg gem скомпилирован против Ruby 1.8.7, когда вы его первоначально установили. Просто запуск gem uninstall pg; gem install pg должен перекомпилировать его против Ruby 1.9.3.

Если вы еще этого не сделали, я бы рекомендовал использовать RVM, чтобы избежать такой проблемы.

Ответ 2

У меня была аналогичная проблема, работа с чем-либо с 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**

Ответ 3

Я не знаю, как насчет вашей ситуации, я устанавливал ruby ​​1.8.7 раньше, чтобы протестировать старый проект, а затем переключился на мою текущую папку проекта rails, где у меня есть файл .rvmrc, устанавливающий мой gemset в 1.9. 3 @BlaBla. Мои версии рубинов и рельсов были правильными (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, на всякий случай, я не знаю, действительно ли это повлияло, и voila, все работает!