所以我正在测试我的一个Rails模型,但系统的Ruby一直在崩溃?这与之前的Growl一起发生过,但从未出现过系统的红宝石。我已经重新开始了,它仍在发生。我正在使用Ruby-1.9.3-p194
,ruby-1.9.3-p0
也会发生同样的崩溃。我的规范似乎无害,我不知道为什么会发生这种情况。
规范:
对缩进感到抱歉。
<小时/> 需要'spec_helper'
describe "Admin pages" do
subject { page}
describe "when not signed in" do
before { visit admin_path }
it { should have_selector('title', text: 'Sign in') }
end
describe "when signed in as an admin" do
before do
sign_in
visit admin_path
end
describe "Admin navigation menu" do
it { should have_css('.nav-header', text: 'Content') }
it { should have_link('Dashboard', href: admin_path) }
it { should have_link('News', href: admin_posts_path) }
it { should have_link('Events', href: admin_events_path) }
it { should have_link('Photos', href: admin_photos_path) }
it { should have_css('.nav-header', text: 'Your Account') }
it { should have_link('Settings', href: admin_settings_path) }
it { should have_link('Help', href: admin_help_path) }
describe "should be on every admin page" do
after { should have_admin_navigation }
it { visit admin_path }
it { visit admin_posts_path }
it { visit admin_photos_path }
it { visit admin_settings_path }
end
describe "should not be on any other pages" do
before { visit root_path }
it { should_not have_css('#admin-navigation') }
end
end
describe "Dashboard (index) page" do
before { visit admin_path }
it { should have_selector('h3', text: 'Dashboard') }
it { should have_selector('title', text: full_title('Admin Dashboard')) }
end
describe "Posts page" do
before { visit admin_posts_path }
it { should have_selector('h3', text: 'Posts') }
it { should have_selector('table') }
it { should have_selector('th', text: 'Title') }
it { should have_selector('th', text: 'Content') }
it { should have_selector('th', text: 'Published On') }
end
describe "Events page" do
before { visit admin_events_path }
it { should have_selector('h3', text: 'Events') }
it { should have_selector('input') }
end
end
end
<小时/> The System Crash Report作为保留格式的要点。
编辑:我通过评论缩小了范围,错误与@second_page
的工厂有关。
答案 0 :(得分:1)
我有一个调试工具可以帮助解决这个问题。它使用ruby的跟踪来记录所有方法调用。最后一个应该是在崩溃之前执行的最后一次调用。也许尝试运行它来查看崩溃前的最后一个方法调用,看看它是否一致?这个实现会使应用程序放慢很多,仅供参考,但是在紧要关头可以给你很好的信息。
https://github.com/ericbeland/debugtools/blob/master/tracing.rb
一旦你知道方法调用,你就可以知道谁/什么是负责人。
-------编辑说明-----------
下载链接文件(或将其粘贴到空白文件中)。在您的应用中,需要该文件。然后在application.rb中执行以下操作:
include Tracing
class Object
include Tracing
end
在代码中找到尽可能晚的位置 - 在此之前您从未见过它崩溃的最后一点。因此,基于您的新编辑,就在该测试的开头。此时,粘贴此声明:
tracing_on('/tmp/tracelog.txt')
这将开始记录。让事情一直持续到发生崩溃。此时,请查看/tmp/tracelog.txt以查看它死亡的位置。