Ruby调试器不会跨越

los*_*ace 3 ruby rspec ruby-debug

在rspec中使用ruby-debug(通过rspec -d),调试器在执行"next"时拒绝跳过语句

它似乎总是进入声明

debugger
params[:appointment][:user_id] = 
  User.where(email: appointment_params[:user_id]).pluck(:id).first if appointment_params[:user_id].to_i == 0
params[:appointment][:country_id] = 
  Country.where(name: appointment_params[:country_id]).pluck(:id).first if appointment_params[:country_id].to_i == 0

@appointment = Appointment.new(appointment_params)
Run Code Online (Sandbox Code Playgroud)

当我点击"n"并按回车键时,它会进入User.where语句

我不知道是什么原因引起了这个想法?

dei*_*vid 7

您很可能不应该使用ruby-debug并应升级到更新的调试器.

如果您正在使用ruby 1.9.x或者使用ruby 2.x时使用byebug切换到调试器,那么问题应该就消失了.如果切换到,请不要使用该标志,它只会影响性能,并且不会带来任何好处.byebug-d