我的现有解决方法是简单地退出终端并重新启动它。这对于大约1或2个rails测试有效,但到第三个测试时,我几乎可以保证会再次出现分段错误。
是否还有其他人遇到这个问题或找到更好的解决方法?
$ rails t
Running via Spring preloader in process 13817
/Users/USER/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/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-darwin16]
编辑:
在深入研究sqlite3_adapter.rb后,我发现导致分段错误的行是创建新的SQLite3数据库。
db = SQLite3::Database.new(
config[:database].to_s,
:results_as_hash => true
)
编辑2:
与其退出并重新启动终端,我发现运行以下命令更有效:
spring stop
这只是一个临时解决方法而非解决方案。
编辑3:
这可能是由于Apple提供的libsqlite3不支持fork操作导致的问题,可以在此处找到更多信息:
https://github.com/sparklemotion/sqlite3-ruby/issues/195
目前,我已在我的~/.bashrc文件底部创建了一个别名:
alias ss='spring stop'
当问题发生时,我现在可以输入:
ss
然后重新运行测试。
brew install sqlite3; gem uninstall sqlite3; bundle update
。 - Petrosgem pristine sqlite3
,但仍然没有任何作用。我正在运行ruby 2.3.3。还有其他我可以做的吗? - HighHopes