जवाबों:
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 plugins के बिना ऐसा करने के लिए (मुझे pry-stack_explorer से परेशानी हो रही थी), बस देखो caller
।
मैं वास्तव में सभी अप्रासंगिक रेल स्टैक आइटम को फ़िल्टर करने के लिए अपने प्रोजेक्ट नाम की तलाश करता हूं। उदाहरण के लिए, यदि मेरे प्रोजेक्ट का नाम archie
मैं उपयोग कर रहा था:
caller.select {|line| line.include? "archie" }
जो मुझे वह स्टैक ट्रेस देता है जिसकी मुझे तलाश है।
एक छोटा रास्ता होगा:
caller.select {|x| x["archie"] }
जो काम भी करता है।
caller.reject {|x| x["vendor/bundle"] || x["/.rbenv/versions/"] }
वहाँ pry-backtrace है जो Pry सत्र के लिए backtrace दिखाता है।
Wtf भी है ? । जो सबसे हालिया अपवाद का शो है। अधिक प्रश्न देखने के लिए अधिक प्रश्न चिह्न जोड़ें या यह देखने के लिए विस्मयादिबोधक चिह्न।
अन्य सभी कमांड को देखने के लिए pry में मदद टाइप करें :)
pry-backtrace
यह ठीक है, लेकिन pry-stack_explorer
प्लगइन अधिक शक्तिशाली है (हालांकि यह एक और रत्न है, एक प्लगइन)
आप कॉलर विधि का उपयोग कर सकते हैं जो पहले से ही मणि पुस्तकालय के अंदर परिभाषित है। उस पद्धति का रिटर्न मान एक सरणी होगा। तो आप लाइनों के उस समूह में खोज के लिए सरणी विधियों को लागू कर सकते हैं
नीचे शक्तिशाली ट्रेस के लिए भी उपयोगी है। https://github.com/pry/pry-stack_explorer
पॉल ओलिवर के उत्तर पर विस्तार।
यदि आपके पास उन वाक्यांशों की सूची है, जिन्हें आप स्थायी रूप से बाहर करना चाहते हैं, तो आप ऐसा कर सकते हैं, जो Pry में एक कस्टम कमांड सुविधा के साथ है।
इन ~/.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
कॉलिंग के callerf
परिणामस्वरूप फ़िल्टर किए गए caller
आउटपुट होंगे। चारों ओर अजीब संकेत #{output}
के मूल स्वरूप को दोहराने के लिए रंग है caller
। मैंने यहां से रंग लिया ।
वैकल्पिक रूप से, यदि आप एक कस्टम कमांड नहीं बनाना चाहते हैं, तो Ctrl+R
कमांड इतिहास के माध्यम से खोज करने के लिए उपयोग करें।
~/.pryrc
। यदि नहीं, तो इसे बनाएं। ~/
हमेशा यूनिक्स सिस्टम पर होम फोल्डर का मतलब है।