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, все работает!