簡體   English   中英

為什么“ binding.pry”會停在錯誤的位置?

[英]Why `binding.pry` halts at the wrong place?

由於某些原因,當我使用binding.pry設置斷點時,該程序最終停止在一個完全不同的位置(並且看起來很奇怪!)。 我做錯了嗎?

Gemfile(簡化)

gem "rails", "~> 4.1"
gem "pry"
gem "pry-rails"
gem "pry-doc"
gem "pry-stack_explorer"
gem "pry-byebug"

情境

斷點:

class SomeController < Application controller
  before_filter :filter
  ...
  def filter
    assignment = SkillAssignment.where(day: selected_date).first

    if assignment
      @day_skill = assignment.skill
      @day_description = @day_skill.description
    end

    binding.pry
  end
end

我到達的地方(使用show-source ):

[1] pry(ActiveSupport::Callbacks::Filters::Before)> show-source

From: /home/yan-foto/workspaces/my-app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.0/lib/active_support/callbacks.rb @ line 156:
Owner: #<Class:ActiveSupport::Callbacks::Filters::Before>
Visibility: private
Number of lines: 16

def self.halting(next_callback, user_callback, halted_lambda, filter)
  lambda { |env|
    target = env.target
    value  = env.value
    halted = env.halted

    unless halted
      result = user_callback.call target, value
      env.halted = halted_lambda.call(target, result)
      if env.halted
        target.send :halted_callback_hook, filter
      end
    end
    next_callback.call env
  }
end

感謝@Manuel和@Anthony,我現在知道此問題是由pry-byebug錯誤引起的。 不幸的是,這似乎並沒有像開發人員在GitHub中提到的那樣立即得到解決:

當前的情況是,我幾乎從未使用過pry-byebug,因此我對維護不使用的軟件的動力不足。 :(

如果要在最后一行使用binding.pry ,一個簡單的解決方法是編寫如下代碼:

def myMethod
  # magic
  binding.pry
  1 + 1
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM