小编Hut*_*tch的帖子

升级到OS Sierra后,Rails会出现分段错误,可能与sqlite3 gem有关

升级到OSX Sierra后,我遇到了随机分段错误的问题.它最常出现在运行rails测试时,我相信它是由sqlite3_adapter引起的.

我目前的工作是简单地退出终端并重新启动它.这适用于大约1或2个轨道测试,而第三个我几乎可以保证得到另一个分段故障.

是否有其他人遇到此问题或找到更好的解决方法?

$ 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]
Run Code Online (Sandbox Code Playgroud)

编辑:

在深入研究sqlite3_adapter.rb后,我发现导致分段错误的行是创建一个新的SQlite3数据库.

db = SQLite3::Database.new(
    config[:database].to_s,
    :results_as_hash => true
)
Run Code Online (Sandbox Code Playgroud)

编辑2:

我没有退出并重新启动终端,而是发现运行:

spring stop
Run Code Online (Sandbox Code Playgroud)

暂时停止问题.不是解决方案,而是更好的解决方案.

编辑3:

这似乎是Apple提供的libsqlite3不是叉安全的问题.更多信息可以在这里找到:

https://github.com/sparklemotion/sqlite3-ruby/issues/195

现在,我在〜/ .bashrc文件的底部创建了一个别名:

alias ss='spring stop'
Run Code Online (Sandbox Code Playgroud)

出现问题时,我现在可以输入:

ss
Run Code Online (Sandbox Code Playgroud)

然后重新运行测试.

sqlite ruby-on-rails sqlite3-ruby ruby-2.3.1

24
推荐指数
1
解决办法
3671
查看次数

如何在vim中默认设置行号?

我知道你可以用vim在vim中添加行号,

:set number
Run Code Online (Sandbox Code Playgroud)

如何将其设置为默认行为?

macos vim

10
推荐指数
1
解决办法
3789
查看次数

在C中格式化typedef结构语句的差异或正确方法?

我看过结构体有两种不同的方式.

typedef struct _myStruct {
    ...
} myStruct;
Run Code Online (Sandbox Code Playgroud)

typedef struct myStruct {
    ...
} myStruct; 
Run Code Online (Sandbox Code Playgroud)

是否有理由领先下划线或这只是一个风格的东西?如果没有差异,那么其中一个优先于另一个吗?

c

1
推荐指数
1
解决办法
66
查看次数

标签 统计

c ×1

macos ×1

ruby-2.3.1 ×1

ruby-on-rails ×1

sqlite ×1

sqlite3-ruby ×1

vim ×1