প্রি ইন রেলে ব্যবহার করা, যখন আমি কোড বাইন্ডিং.প্রাইতে ব্রেকপয়েন্টে হিট করি
আমি কীভাবে এখানে এসেছি, কে আমাকে ডেকেছিল, কে তাদের ডেকেছিল ইত্যাদি আমি জানতে চাই তবে অদ্ভুতভাবে আমি এই আদেশটি দেখতে পাচ্ছি না। কেউ কি জানে?
উত্তর:
পিআর-স্ট্যাক_এক্সপ্লোরার প্লাগইনটি ব্যবহার করুন , এটি আপনাকে কল-স্ট্যাককে উপরে এবং নীচে (সহ 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>)>
কোনও পিআর প্লাগইন ছাড়াই এটি করার জন্য (আমার কাছে পিআর-স্ট্যাক_এক্সপ্লোরার সমস্যা ছিল), কেবল দেখুন caller
।
আমি সমস্ত অপ্রাসঙ্গিক রেল স্ট্যাক আইটেমগুলি ফিল্টার করার জন্য আমার প্রকল্পের নামটি সন্ধান করি। উদাহরণস্বরূপ, যদি আমার প্রকল্পের নাম archie
আমি ব্যবহার করতাম:
caller.select {|line| line.include? "archie" }
যা আমাকে সন্ধানের জন্য স্ট্যাক ট্রেস দেয়।
একটি ছোট উপায় হ'ল:
caller.select {|x| x["archie"] }
যা ঠিক পাশাপাশি কাজ করে।
caller.reject {|x| x["vendor/bundle"] || x["/.rbenv/versions/"] }
নেই কিছুর মধ্যে উঁকি মারা-ব্যাক-ট্রেস যা প্রদর্শনী Pry সেশনের জন্য ব্যাক-ট্রেস আছে।
রয়েছে Wtf? । কোন শো সবচেয়ে সাম্প্রতিক ব্যতিক্রমের ব্যাকট্রিস। ব্যাকট্রিজের আরও দেখতে আরও প্রশ্ন চিহ্ন যুক্ত করুন বা এগুলি দেখতে একটি বিস্ময়কর চিহ্ন mark
অন্যান্য সমস্ত কমান্ড দেখতে পিএসিতে সহায়তা টাইপ করুন :)
pry-backtrace
ঠিক আছে, তবে pry-stack_explorer
প্লাগইনটি আরও শক্তিশালী (যদিও এটি অন্য একটি রত্ন, একটি প্লাগইন)
আপনি কলার পদ্ধতিটি ব্যবহার করতে পারেন যা রত্ন লাইব্রেরির ভিতরে ইতিমধ্যে সংজ্ঞায়িত হয়েছে। এই পদ্ধতির রিটার্ন মান একটি অ্যারে হবে। সুতরাং আপনি ইভেন্টগুলি লাইনের সেই গুচ্ছটিতে অনুসন্ধানের জন্য অ্যারে পদ্ধতিগুলি প্রয়োগ করতে পারেন
নীচে শক্তিশালী ট্রেস জন্য সহায়ক। https://github.com/pry/pry-stack_explorer
পল অলিভারের উত্তরটি প্রসারিত করা।
আপনার যদি বাক্যাংশের একটি তালিকা থাকে তবে আপনি স্থায়ীভাবে বাদ দিতে চান আপনি এটি প্রাইতে একটি কাস্টম কমান্ড বৈশিষ্ট্য সহ করতে পারেন।
ইন ~/.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
। যদি তা না হয় তবে এটি তৈরি করুন। ~/
সর্বদা ইউনিক্স সিস্টেমে হোম ফোল্ডারটি বোঝায়।