1

何らかの理由で、 を使用してブレークポイントを設定する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
4

1 に答える 1

2

@Manuel と @Anthony のおかげで、この問題は .NET のバグが原因であることがわかりましたpry-byebug残念ながら、開発者が GitHub で述べているように、これはすぐには修正されないようです。

pry-byebug はほとんど使っていないのが現状なので、使っていないソフトウェアをメンテする気力がなくなってきています。:(

最後の行にを入れたい場合binding.pry、簡単な回避策は次のように書くことです:

def myMethod
  # magic
  binding.pry
  1 + 1
end
于 2015-01-26T13:37:51.913 に答える