无法让rspec,spork和调试器发挥得很好

时间:2009-11-13 22:18:22

标签: ruby-on-rails ruby rspec

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

2 个答案:

答案 0 :(得分:6)

我正在使用ruby-debug运行Spork和Autospec。 Spork的更高版本有一个你可以要求的外部ruby-debug库,它是实验性的,所以使用风险自负。在我的prefork块我只有:

要求'spork / ext / ruby​​-debug'

它会突破到Spork运行的终端中的调试会话。有方法等启动远程连接设置等,最近的提交已经有更新和修复应用于他们的调试功能,所以它正在积极开发。希望它很快就会成为核心并经过测试......

答案 1 :(得分:3)

我总是把它放在config/environments/test.rb中,并将debugger放在我的应用代码中的断点处(而不是规范)。