Pry : 스택보기
코드 바인딩에서 중단 점에 도달했을 때 Rails에서 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>)>
pry 플러그인없이이 작업을 수행하려면 (pry-stack_explorer에 문제가 있음) caller
.
실제로 관련없는 모든 레일 스택 항목을 필터링하기 위해 프로젝트 이름을 찾습니다. 예를 들어 내 프로젝트 이름이 다음과 같으면 archie
다음을 사용합니다.
caller.select {|line| line.include? "archie" }
내가 찾고있는 스택 추적을 제공합니다.
더 짧은 방법은 다음과 같습니다.
caller.select {|x| x["archie"] }
잘 작동합니다.
이 놀리려는-역 추적 하는보기 올립니다 세션에 대한 역 추적의는.
또한이 무슨 일? . 어느 쇼가 가장 최근 예외의 역 추적입니다. 역 추적을 더 많이 보려면 물음표를 더 추가하고 모든 것을 보려면 느낌표를 추가하십시오.
다른 모든 명령을 보려면 pry에 help 를 입력 하십시오. :)
gem 라이브러리 내에 이미 정의 된 호출자 메서드를 사용할 수 있습니다. 해당 메서드의 반환 값은 배열이됩니다. 따라서 해당 행에서 검색을 위해 배열 메서드를 이벤트 적용 할 수 있습니다.
아래는 강력한 추적에도 도움이됩니다. https://github.com/pry/pry-stack_explorer
Paul Oliver의 답변을 확장합니다.
영구적으로 제외하려는 구문 목록이있는 경우 Pry의 사용자 지정 명령 기능을 사용하여 수행 할 수 있습니다.
In ~/.pryrc
:
Pry::Commands.block_command "callerf", "Filter the caller backtrace" do
output = caller.reject! { |line| line["minitest"] || line["pry"] }
puts "\e[31m#{output.join("\n")}\e[0m"
end
Calling callerf
will result in a filtered caller
output. Weird signs around #{output}
is coloring to replicate the original look of the caller
. I took the color from here.
Alternatively, if you don't want to make a custom command, use Ctrl+R
to search through command history.
참고URL : https://stackoverflow.com/questions/15303103/pry-show-me-the-stack
'programing' 카테고리의 다른 글
Django Admin의 모델 히스토리에 연결 (0) | 2020.09.16 |
---|---|
C에서 예외를 던지는 방법은 무엇입니까? (0) | 2020.09.16 |
MySQL- "0"으로 우편 번호를 앞쪽으로 채우는 방법은 무엇입니까? (0) | 2020.09.15 |
Swift 언어에서 대소 문자를 무시하고 두 문자열을 비교하는 방법은 무엇입니까? (0) | 2020.09.15 |
카피 바라는 요소의 속성을 주장 (0) | 2020.09.15 |