Ruby on rails 撬起;“下一步”;命令don';I don’我没料到会这样
我正在试着用Pry调试。大多数情况下,每当我使用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
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:谢谢,但我的问题不是循环,而是在堆栈中深入撬动,而不是进入下一行。