Ошибка Rails 5 (ошибка сегментации)

#ruby-on-rails #ruby #spring #ruby-on-rails-5

#ruby-on-rails #ruby #весна #ruby-on-rails-5

Вопрос:

Получение ошибки в терминале при выполнении любой команды rails, например ‘rails test’, после изменения файла в моем проекте, такого как файл модели ‘users.rb’ или файл контроллера ‘users_controller.rb’. Ошибка «исправлена», если я запускаю «spring stop» для перезапуска сервера spring. Но это происходит каждый раз, когда я изменяю файл. Вот начальное сообщение об ошибке / ошибке:

 [sample_app (modeling-users)]$ time rails test
Running via Spring preloader in process 43345
/Users/AlfonsoGiron/.rvm/gems/ruby-2.3.1@global/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/sqlite3_adapter.rb:27: [BUG] Segmentation fault at 0x00000000000110
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
  

Ошибка сохраняется для тысяч строк. Вот небольшой фрагмент его начала:

 -- Control frame information -----------------------------------------------
c:0072 p:---- s:0285 e:000284 CFUNC  :initialize
c:0071 p:---- s:0283 e:000282 CFUNC  :new
c:0070 p:0183 s:0278 e:000277 METHOD /Users/AlfonsoGiron/.rvm/gems/ruby-2.3.1@global/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/sqlite3_adapter
c:0069 p:0028 s:0271 e:000270 METHOD /Users/AlfonsoGiron/.rvm/gems/ruby-2.3.1@global/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/abstract/connec
c:0068 p:0027 s:0268 e:000267 METHOD /Users/AlfonsoGiron/.rvm/gems/ruby-2.3.1@global/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/abstract/connec
  

И вот последние несколько строк:

 1696 /Users/AlfonsoGiron/.rvm/gems/ruby-2.3.1@global/gems/activesupport-5.0.0.1/lib/active_support/testing/stream.rb
 1697 /Users/AlfonsoGiron/.rvm/gems/ruby-2.3.1@global/gems/railties-5.0.0.1/lib/rails/generators/testing/behaviour.rb
 1698 /Users/AlfonsoGiron/.rvm/gems/ruby-2.3.1@global/gems/railties-5.0.0.1/lib/rails/generators/testing/setup_and_teardown.rb
 1699 /Users/AlfonsoGiron/.rvm/gems/ruby-2.3.1@global/gems/railties-5.0.0.1/lib/rails/generators/testing/assertions.rb
 1700 /Users/AlfonsoGiron/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-darwin15/io/console.bundle
 1701 /Users/AlfonsoGiron/.rvm/gems/ruby-2.3.1@global/gems/thor-0.19.1/lib/thor/shell/basic.rb
 1702 /Users/AlfonsoGiron/.rvm/gems/ruby-2.3.1@global/gems/railties-5.0.0.1/lib/rails/generators/test_case.rb
 1703 /Users/AlfonsoGiron/.rvm/gems/ruby-2.3.1@global/gems/activesupport-5.0.0.1/lib/active_support/testing/autorun.rb
[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html
  

В основном каждая строка ссылается на ‘.rvm / gems /’ и т. Д. Очевидно, что это проблема с rvm / gems? Я запустил «обновление пакета» и переустановил свои драгоценные камни безрезультатно. Если что, предложения по самому чистому способу удаления / переустановки Ruby / Rails? Думая, что это может быть решением, но хотелось бы сделать это правильно. Спасибо.

Комментарии:

1. Это может быть ошибкой в Ruby, если вы используете не последнюю версию, и ее повторная установка не устраняет проблему.

2. Вы пробовали это с PostgreSQL / MySQL? Sqlite всегда создает проблемы, подобные этой, и несовместимости с некоторыми функциями AR. И вы, вероятно, не будете использовать его на производстве, и это вызовет еще один набор проблем с четностью. dev / prod.

Ответ №1:

Это похоже на дефект с драгоценным камнем sqlite3.. Смотрите Отчет об ошибке здесь: https://bugs.ruby-lang.org/issues/12781 и https://bugs.ruby-lang.org/issues/12795

Похоже, что исправления пока нет.. У меня тоже возникла эта проблема, сначала я смог запустить brew update, а затем bundle update в новом окне терминала, что позволило мне вызвать .connection на моих моделях и снова получить доступ к консоли .. сегодня это все еще работает, но очень трудоемкий процесс.

Комментарии:

1. обновлен драгоценный камень sqlite3 до версии 1.3.12: gem 'sqlite3', '1.3.12'