Прай: покажи мне стопку

Использование Pry в Rails, когда я сталкиваюсь с точкой останова в коде     binding.pry

Я хочу знать, как я сюда попал, кто звонил мне, кто звонил им и т. д. Но, как ни странно, я не вижу этой команды. Кто-нибудь знает?

78 голосов | спросил pitosalas 9 MaramSat, 09 Mar 2013 00:54:29 +04002013-03-09T00:54:29+04:0012 2013, 00:54:29

4 ответа


0

Используйте плагин pry-stack_explorer , он позволяет перемещаться вверх и вниз по стеку вызовов (с помощью up и down), отобразить стек вызовов (с show-stack) и т. д.

смотрите здесь:

Frame number: 0/64

From: /Users/johnmair/ruby/rails_projects/personal_site/app/controllers/posts_controller.rb @ line 7 PostsController#index:

    5: def index
    6:   @posts = Post.all
 => 7:   binding.pry
    8: end

[1] pry(#<PostsController>)> show-stack

Showing all accessible frames in stack (65 in total):
--
=> #0  index <PostsController#index()>
   #1 [method]  send_action <ActionController::ImplicitRender#send_action(method, *args)>
   #2 [method]  process_action <AbstractController::Base#process_action(method_name, *args)>
   #3 [method]  process_action <ActionController::Rendering#process_action(*arg1)>
<... clipped ...>

[2] pry(#<PostsController>)> up

Frame number: 1/64
Frame type: method

From: /Users/johnmair/.rvm/gems/ruby-2.0.0-p0/gems/actionpack-3.2.8/lib/action_controller/metal/implicit_render.rb @ line 4 ActionController::ImplicitRender#send_action:

    3: def send_action(method, *args)
 => 4:   ret = super
    5:   default_render unless response_body
    6:   ret
    7: end

[3] pry(#<PostsController>)> 
ответил horseyguy 9 MaramSat, 09 Mar 2013 06:09:49 +04002013-03-09T06:09:49+04:0006 2013, 06:09:49
0

Чтобы сделать это без каких-либо плагинов pry (у меня были проблемы с pry-stack_explorer), просто посмотрите на caller

Я на самом деле ищу название своего проекта, чтобы отфильтровать все ненужные элементы стека рельсов. Например, если бы имя моего проекта было archie, я бы использовал:

caller.select {|line| line.include? "archie" }

Что дает мне трассировку стека, которую я ищу.

Более короткий путь:

caller.select {|x| x["archie"] }

Что работает так же хорошо.

ответил Paul Oliver 7 FebruaryEurope/MoscowbFri, 07 Feb 2014 09:49:03 +0400000000amFri, 07 Feb 2014 09:49:03 +040014 2014, 09:49:03
0

Существует pry-backtrace , в котором показана обратная трассировка для сессии Pry.

Существует также wtf? . Какое шоу является следом самого последнего исключения. Добавьте больше вопросительных знаков, чтобы увидеть больше следа или восклицательный знак, чтобы увидеть все это.

Введите help в pry, чтобы увидеть все остальные команды:)

ответил gef 9 MaramSat, 09 Mar 2013 01:25:52 +04002013-03-09T01:25:52+04:0001 2013, 01:25:52
0

Вы можете использовать метод вызывания, который уже определен в библиотеке gem. Возвращаемое значение этого метода будет массивом. Таким образом, вы можете применить методы массива для поиска в этой группе строк

Ниже также полезно для мощного трассировки. https://github.com/pry/pry-stack_explorer

ответил Nishant Upadhyay 23 TueEurope/Moscow2014-12-23T16:33:54+03:00Europe/Moscow12bEurope/MoscowTue, 23 Dec 2014 16:33:54 +0300 2014, 16:33:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132