Debugging 如何正确设置撬入导轨4.2

Debugging 如何正确设置撬入导轨4.2,debugging,ruby-on-rails-4.2,pry,pry-rails,Debugging,Ruby On Rails 4.2,Pry,Pry Rails,我不清楚在Rails 4.2项目中需要安装哪些gems才能正确运行Pry。直到最近,我似乎还过得很好。出于某种原因,binding.pry现在每当我试图在命令行中使用next、step等单步执行控制台会话时,似乎都会吐出来。它将抛出一个丑陋的堆栈跟踪,然后在代码中显示相同的点,而无需进一步。在第二个next命令之后,它抛出相同的堆栈跟踪并退出,将执行返回到本地主机服务器。我在浏览器页面上遇到运行时错误,未收集帧 如果我注释掉代码中的binding.pry,一切正常。所以我强烈怀疑我的Pry配置有

我不清楚在Rails 4.2项目中需要安装哪些gems才能正确运行Pry。直到最近,我似乎还过得很好。出于某种原因,
binding.pry
现在每当我试图在命令行中使用
next
step
等单步执行控制台会话时,似乎都会吐出来。它将抛出一个丑陋的堆栈跟踪,然后在代码中显示相同的点,而无需进一步。在第二个
next
命令之后,它抛出相同的堆栈跟踪并退出,将执行返回到本地主机服务器。我在浏览器页面上遇到运行时错误,
未收集帧

如果我注释掉代码中的
binding.pry
,一切正常。所以我强烈怀疑我的Pry配置有问题。似乎有几十种不同的Pry,没有明确的安装指南,可能会发生冲突等

以下是代码到达绑定后在Pry控制台中调用
next
时得到的堆栈跟踪。Pry调用:

From: /Users/me/sites/arailsapp/app/controllers/bars_controller.rb @ line 31 BarsController#edit:

    29: def edit
    30:   binding.pry
 => 31:   @bar = Bar.find(params[:id])
    32:   @foo = @bar.foo
    33: end

[6] pry(#<BarsController>)> n
Completed 500 Internal Server Error in 2685ms (ActiveRecord: 0.0ms)

RuntimeError - No frames collected.:
  pry-byebug (3.2.0) lib/byebug/processors/pry_processor.rb:122:in `perform_next'
  pry-byebug (3.2.0) lib/byebug/processors/pry_processor.rb:60:in `perform'
  pry-byebug (3.2.0) lib/byebug/processors/pry_processor.rb:49:in `run'
  pry-byebug (3.2.0) lib/byebug/processors/pry_processor.rb:111:in `resume_pry'
  pry-byebug (3.2.0) lib/byebug/processors/pry_processor.rb:69:in `at_line'
  byebug (5.0.0) lib/byebug/context.rb:90:in `at_line'
  app/controllers/scholarships_controller.rb:31:in `edit'
  actionpack (4.2.1) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  actionpack (4.2.1) lib/abstract_controller/base.rb:198:in `process_action'
  actionpack (4.2.1) lib/action_controller/metal/rendering.rb:10:in `process_action'
  actionpack (4.2.1) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
  activesupport (4.2.1) lib/active_support/callbacks.rb:117:in `call'

  # omitting the next ~40 lines in the Rails stack...
我也试过使用
pry-stack\u浏览器
pry-byebug
gems注释掉了…没有区别

最后是我的.pryrc文件:

# ~/.pryrc
if defined?(PryByebug)
  Pry.commands.alias_command 'c', 'continue'
  Pry.commands.alias_command 's', 'step'
  Pry.commands.alias_command 'n', 'next'
  Pry.commands.alias_command 'f', 'finish'
end

# Hit Enter to repeat last command
Pry::Commands.command /^$/, "repeat last command" do
  _pry_.run_command Pry.history.to_a.last
end

一些摆弄和几次服务器重启似乎已经解决了这个问题。感谢Deivid推荐remvoving
pry-stack\u explorer
。以下是测试和开发组的文件:

group :development do
  gem 'better_errors', '~> 2.1.1'
  gem 'annotate', '~> 2.6.10'
end

group :development, :test do
  gem 'pry-rails'
  gem 'pry-byebug'
  gem 'web-console', '~> 2.0'
  gem 'spring'
  gem 'spring-commands-rspec', '~> 1.0.4'
  gem 'rspec-rails', '~> 3.2.3'
  gem 'guard-rspec', '~> 4.6.0'
  gem 'sqlite3'
  gem 'factory_girl_rails', '~> 4.5.0', require: false
end

group :test do
  gem 'database_cleaner', '~> 1.4.1'
  gem 'faker', '~> 1.4.3'
  gem 'capybara', '~> 2.4.4'
  gem 'launchy', '~> 2.4.3'
  gem 'shoulda', '~> 3.5.0'
end

我只用撬杠。有时候我会把它和byebug一起使用(而不是pry byebug)。也许从一个开始,并确保在更新时捆绑。这些gem有时会抛出兔子洞错误,因此如果您对pry报告的内容不确信,请添加一些日志记录。首先,从Gemfile中删除
pry-stack\u explorer
,然后重新处理。该gem与
pry-byebug
不兼容,并且
pry-byebug
提供了等效功能,因此它不是必需的。@deivid抱歉,也许我有点困惑,但是什么等效功能可以显示pry-byebug提供的堆栈?我看不到任何显示当前堆栈的功能。“窥探回溯”很接近,但内部窥探方法杂乱无章。嘿,你说得对。我们有命令在堆栈上下移动,但不显示它。不过,您可以使用Ruby,
Thread.current.backtrace\u位置
group :development do
  gem 'better_errors', '~> 2.1.1'
  gem 'annotate', '~> 2.6.10'
end

group :development, :test do
  gem 'pry-rails'
  gem 'pry-byebug'
  gem 'web-console', '~> 2.0'
  gem 'spring'
  gem 'spring-commands-rspec', '~> 1.0.4'
  gem 'rspec-rails', '~> 3.2.3'
  gem 'guard-rspec', '~> 4.6.0'
  gem 'sqlite3'
  gem 'factory_girl_rails', '~> 4.5.0', require: false
end

group :test do
  gem 'database_cleaner', '~> 1.4.1'
  gem 'faker', '~> 1.4.3'
  gem 'capybara', '~> 2.4.4'
  gem 'launchy', '~> 2.4.3'
  gem 'shoulda', '~> 3.5.0'
end