Given I am a dumb programmer
and I am using rspec
and I am using spork
and I want to debug ...mmm...let's saaay, a spec for Phone.
然后,我应该在哪里放置“require'ruby-debug'”行,以便停止在phone_spec.rb中的特定点处理? (我所要求的只是一个巨大的箭头,即使是受到挑战的程序员也可以看到:-3)
我尝试了很多地方,除非我没有正确测试它们,否则会发生一些奇怪的事情:
在以下位置的spec_helper.rb中:
require 'rubygems'
require 'spork'
<= TRIED IT HERE
ENV["RAILS_ENV"] ||= 'test'
Spork.prefork do
require File.dirname(__FILE__) + "/../config/environment" #unless defined?(RAILS_ROOT)
require 'spec/autorun'
require 'spec/rails'
require 'machinist/active_record'
require 'faker'
require 'sham'
<= TRIED IT HERE
end
Spork.each_run do
require File.expand_path(File.dirname(__FILE__) + "/blueprints")
<= TRIED IT HERE
end
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
Spec::Runner.configure do |config|
config.use_transactional_fixtures = true
config.use_instantiated_fixtures = false
config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
config.before(:all) { Sham.reset(:before_all) }
config.before(:each) { Sham.reset(:before_each) }
<= TRIED IT HERE
end
答案 0 :(得分:6)
我正在使用ruby-debug运行Spork和Autospec。 Spork的更高版本有一个你可以要求的外部ruby-debug库,它是实验性的,所以使用风险自负。在我的prefork块我只有:
要求'spork / ext / ruby-debug'
它会突破到Spork运行的终端中的调试会话。有方法等启动远程连接设置等,最近的提交已经有更新和修复应用于他们的调试功能,所以它正在积极开发。希望它很快就会成为核心并经过测试......
答案 1 :(得分:3)
我总是把它放在config/environments/test.rb
中,并将debugger
放在我的应用代码中的断点处(而不是规范)。