Ruby on rails 撬起;“下一步”;命令don';I don’我没料到会这样

Ruby on rails 撬起;“下一步”;命令don';I don’我没料到会这样,ruby-on-rails,ruby,pry,Ruby On Rails,Ruby,Pry,我正在试着用Pry调试。大多数情况下,每当我使用next命令跳过下一行时,pry都会转到另一帧。例如,查看我的代码: Item.where(dst: "book").each do |book| ott = book.ott est = extract_es_title(ott) if ott != nil web_item = Item.find_by(su: GR_BASE_URL+book.id) binding.pry end class Item

我正在试着用Pry调试。大多数情况下,每当我使用
next
命令跳过下一行时,pry都会转到另一帧。例如,查看我的代码:

Item.where(dst: "book").each do |book|
    ott = book.ott
    est = extract_es_title(ott) if ott != nil
    web_item = Item.find_by(su: GR_BASE_URL+book.id)
    binding.pry
end

class Item
    include Mongoid::Document
    include Mongoid::Timestamps

    field :su, as: :source_url
    field :ott, as: :other_titles
    field :dst, as: :details_structure
end
如果我运行代码,它将在正确的断点处停止。但是,如果我在Pry console中运行一次
next
,它将进入堆栈中看起来更深的位置,而不是跳到下一行。这是Pry在我运行“下一步”时显示mw的代码:

    645: def yield_document(document, &block)
    646:   doc = document.respond_to?(:_id) ?
    647:     document : Factory.from_db(klass, document, criteria.options[:fields])
    648:   yield(doc)
 => 649:   documents.push(doc) if cacheable?
    650: end
为什么会有这种行为?我怎样才能跳到下一个方法行


提前感谢。

如果您想转到每个块的下一次迭代。您只需将binding.pry移动到循环的开头,然后每次运行
continue

Item.where(dst: "book").each do |book|
    binding.pry
    ott = book.ott
    est = extract_es_title(ott) if ott != nil
    web_item = Item.find_by(su: GR_BASE_URL+book.id)
end
使用断点:

break 4
然后点击
CTRL-D
或键入
continue
,它会将您带到第4行。通常,“下一行”被认为是执行的下一行,而不是当前文件的下一行


来自docs:

谢谢,但我的问题不是循环,而是在堆栈中深入撬动,而不是进入下一行。