微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 为什么测试期间我的ruby崩溃/断块?

我已经阅读过它可能与sqlite3有关的地方,但我的谷歌搜索没有产生任何帮助.以下是错误示例: https://travis-ci.org/NullVoxPopuli/aeonvera/jobs/61047991

它似乎随机发生 – 无论是在我的机器上还是在travis上.所以我最终不得不重新运行rspec直到它通过 – 这非常烦人,因为我的测试套件需要几分钟才能运行.

这是怎么造成的?我该如何预防?与你的CI积极合作以重新运行规范直到它通过为止是有点愚蠢的.

我正在使用sqlite3在内存中运行我的所有规格 – 这是一个很好的速度奖金,也帮助我确保我没有做任何特定于数据库查询(我的生产应用程序使用pgsql)

如果有人好奇,这里是我的回购链接https://github.com/NullVoxPopuli/aeonvera

UPDATE

这不是特定于sqlite3的 – 当使用postgresql时也会发生这种情况.

堆栈跟踪

/home/preston/.rvm/gems/ruby-2.2.1/gems/activerecord-4.1.10/lib/active_record/connection_adapters/postgresql/database_statements.rb:128: [BUG] Segmentation fault at 0x000000000001d4
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0057 p:---- s:0311 e:000310 CFUNC  :backtrace
c:0056 p:0009 s:0310 e:000309 RESCUE /home/preston/.rvm/gems/ruby-2.2.1/gems/activesupport-4.1.10/lib/active_support/notifications/instrumenter.rb:25
c:0055 p:0037 s:0307 e:000305 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activesupport-4.1.10/lib/active_support/notifications/instrumenter.rb:25
c:0054 p:0034 s:0300 e:000299 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activerecord-4.1.10/lib/active_record/connection_adapters/abstract_adapter.rb:378
c:0053 p:0014 s:0292 e:000291 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activerecord-4.1.10/lib/active_record/connection_adapters/postgresql/database_statement
c:0052 p:0019 s:0286 e:000286 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activerecord-4.1.10/lib/active_record/connection_adapters/abstract/savepoints.rb:17
c:0051 p:0014 s:0283 e:000282 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activerecord-4.1.10/lib/active_record/connection_adapters/abstract/transaction.rb:114
c:0050 p:0009 s:0280 e:000279 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activerecord-4.1.10/lib/active_record/connection_adapters/abstract/database_statements.
c:0049 p:0018 s:0277 e:000276 RESCUE /home/preston/.rvm/gems/ruby-2.2.1/gems/activerecord-4.1.10/lib/active_record/connection_adapters/abstract/database_statements.
c:0048 p:0035 s:0274 e:000272 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activerecord-4.1.10/lib/active_record/connection_adapters/abstract/database_statements.
c:0047 p:0078 s:0267 e:000266 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activerecord-4.1.10/lib/active_record/connection_adapters/abstract/database_statements.
c:0046 p:0017 s:0263 e:000262 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activerecord-4.1.10/lib/active_record/transactions.rb:208
c:0045 p:0014 s:0262 E:001878 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activerecord-4.1.10/lib/active_record/transactions.rb:326
c:0044 p:0010 s:0256 e:000255 RESCUE
c:0043 p:---- s:0225 e:000221 CFUNC  :initialize_copy
c:0042 p:---- s:0221 e:000220 CFUNC  :unlock
c:0041 p:0024 s:0223 e:000220 BLOCK  /home/preston/.rvm/gems/ruby-2.2.1/gems/railties-4.1.10/lib/rails/backtrace_cleaner.rb:10 [FINISH]
c:0040 p:---- s:0218 e:000217 CFUNC  :call
c:0039 p:0012 s:0214 e:000213 BLOCK  /home/preston/.rvm/gems/ruby-2.2.1/gems/activesupport-4.1.10/lib/active_support/backtrace_cleaner.rb:85 [FINISH]
c:0038 p:---- s:0211 e:000210 CFUNC  :map
c:0037 p:0010 s:0208 e:000207 BLOCK  /home/preston/.rvm/gems/ruby-2.2.1/gems/activesupport-4.1.10/lib/active_support/backtrace_cleaner.rb:85 [FINISH]
c:0036 p:---- s:0205 e:000204 CFUNC  :each
c:0035 p:0011 s:0202 e:000201 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activesupport-4.1.10/lib/active_support/backtrace_cleaner.rb:84
c:0034 p:0015 s:0198 e:000197 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activesupport-4.1.10/lib/active_support/backtrace_cleaner.rb:37
c:0033 p:0025 s:0192 e:000191 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/actionpack-4.1.10/lib/action_dispatch/middleware/exception_wrapper.rb:89
c:0032 p:0009 s:0188 e:000187 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/actionpack-4.1.10/lib/action_dispatch/middleware/exception_wrapper.rb:49
c:0031 p:0037 s:0185 e:000184 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/actionpack-4.1.10/lib/action_dispatch/middleware/debug_exceptions.rb:74
c:0030 p:0028 s:0177 e:000176 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/actionpack-4.1.10/lib/action_dispatch/middleware/debug_exceptions.rb:34
c:0029 p:0045 s:0166 e:000165 RESCUE /home/preston/.rvm/gems/ruby-2.2.1/gems/actionpack-4.1.10/lib/action_dispatch/middleware/debug_exceptions.rb:27
c:0028 p:0091 s:0163 e:000162 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/actionpack-4.1.10/lib/action_dispatch/middleware/debug_exceptions.rb:17
c:0027 p:0011 s:0154 e:000153 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/actionpack-4.1.10/lib/action_dispatch/middleware/show_exceptions.rb:30
c:0026 p:0077 s:0149 e:000148 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/railties-4.1.10/lib/rails/rack/logger.rb:38
c:0025 p:0011 s:0142 e:000141 BLOCK  /home/preston/.rvm/gems/ruby-2.2.1/gems/railties-4.1.10/lib/rails/rack/logger.rb:20
c:0024 p:0007 s:0140 e:000139 BLOCK  /home/preston/.rvm/gems/ruby-2.2.1/gems/activesupport-4.1.10/lib/active_support/tagged_logging.rb:68
c:0023 p:0018 s:0138 e:000137 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activesupport-4.1.10/lib/active_support/tagged_logging.rb:26
c:0022 p:0013 s:0133 e:000132 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activesupport-4.1.10/lib/active_support/tagged_logging.rb:68
c:0021 p:0042 s:0129 e:000128 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/railties-4.1.10/lib/rails/rack/logger.rb:20
c:0020 p:0077 s:0124 e:000123 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/quiet_assets-1.1.0/lib/quiet_assets.rb:27
c:0019 p:0011 s:0120 e:000119 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/request_store-1.1.0/lib/request_store/middleware.rb:8
c:0018 p:0031 s:0116 e:000115 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/actionpack-4.1.10/lib/action_dispatch/middleware/request_id.rb:21
c:0017 p:0071 s:0112 e:000111 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/rack-1.5.3/lib/rack/methodoverride.rb:21
c:0016 p:0024 s:0107 e:000106 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/rack-1.5.3/lib/rack/runtime.rb:17
c:0015 p:0035 s:0098 e:000097 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/activesupport-4.1.10/lib/active_support/cache/strategy/local_cache_middleware.rb:26
c:0014 p:0091 s:0093 e:000092 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/actionpack-4.1.10/lib/action_dispatch/middleware/static.rb:84
c:0013 p:0011 s:0087 e:000086 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/rack-1.5.3/lib/rack/sendfile.rb:112
c:0012 p:0058 s:0077 e:000076 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/railties-4.1.10/lib/rails/engine.rb:514
c:0011 p:0036 s:0073 e:000072 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/railties-4.1.10/lib/rails/application.rb:144
c:0010 p:0011 s:0069 e:000068 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/rack-1.5.3/lib/rack/builder.rb:138
c:0009 p:0148 s:0065 e:000064 BLOCK  /home/preston/.rvm/gems/ruby-2.2.1/gems/rack-1.5.3/lib/rack/urlmap.rb:65 [FINISH]
c:0008 p:---- s:0057 e:000056 CFUNC  :each
c:0007 p:0054 s:0054 e:000053 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/rack-1.5.3/lib/rack/urlmap.rb:50
c:0006 p:0045 s:0045 e:000044 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/capybara-2.4.4/lib/capybara/server.rb:19
c:0005 p:0301 s:0040 e:000039 METHOD /home/preston/.rvm/gems/ruby-2.2.1/gems/rack-1.5.3/lib/rack/handler/webrick.rb:60
c:0004 p:0211 s:0028 e:000027 METHOD /home/preston/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:138
c:0003 p:0370 s:0018 e:000017 METHOD /home/preston/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:94
c:0002 p:0103 s:0007 e:000006 BLOCK  /home/preston/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/server.rb:294 [FINISH]
c:0001 p:---- s:0002 e:000001 TOP    [FINISH]

所有其他信息:http://pastebin.com/d6Tm13ww

解决方法

你可以尝试退回你的git历史,直到你有一个稳定的状态.并从那里引入变化来隔离“坏”变化.

此外,即使在测试中,也应该避免在sqlite3上使用.测试应尽可能接近生产.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


validates:conclusion,:presence=>true,:inclusion=>{:in=>[0,1]}validates:email,:presence=>true,:length=>{:minimum=>3,:maximum=>254},:uniqueness=>true,:email=>truevalidates:ending_order,
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各Master的状态,如果Master异常,则会做主从切换,将Slave作为master,将master做为slave。其配置也较复杂,且表现一般。redis3.0以后已经支持集群容错功能,并且非常简单1.1素材准备centos7(集群搭建,至少三个master。需
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow                 不知道大家是否注意到,全新安装ruby之后,无论是在windows或是linux还是macosX下使用rix
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 modify_my_object!,这个方法名是以!结尾,在ruby的对象里边是用于表达修改本身的意思。比如String#gsub,返回的是一个新的字符串对象;而String#gsub!,返回的是自身已经被修改的对象。不止!这样的特殊字符可以命名,ruby
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。 什么是编程? 编程即程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。二编程语言分
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编程语言的特性包括:数据封装数据抽象多态性继承这些特性将在面向对象的Ruby中进行讨论。一个面向对象的程序,涉及到的类和对象。类是个别对象创建的蓝图。在面向对象的术语中,您
1.ruby的标签<ruby>漢<rp>(<p><rt>han<t><rp>)<p>字<rp>(<p><rt>zi<t><rp>)<p><uby> 
1、软件安装1.安装包是个压缩包-->解压到/homeedis_tar下命令如下: tar-zxvf./../-C/homeedis_tar2.安装c++环境yum-yinstallgcc-c++(注:redis底层源码是c++)3.解压后需要源码编译进入到redis-3.0.0后执行make4.编译完后开始安装需要指定一个安装路径
1.sass基于Ruby语言开发而成,因此安装sass前需要安装Ruby。(注:mac下自带Ruby无需在安装Ruby!)window下安装SASS首先需要安装Ruby,先从官网下载Ruby并安装。安装过程中请注意勾选AddRubyexecutablestoyourPATH添加到系统环境变量。ruby官网:https:/ubyinstaller.org/downloa
本节对我们项目实现的功能和知识点做一个简单的介绍,因为是RESTfulAPI项目,所以对于后端来说基本上没有什么UI界面可展示,那我们就在关键的点,使用客户端(Android)实现的效果图。课程简介这是一门企业级项目实战课程,目的是从0使用Rails开发一个企业级RESTfulAPI项目;他不能让你年薪30