كيفية تحديد قيمة متغير وحدة التحكم أثناء التنفيذ في Ruby on Rails؟

StackOverflow https://stackoverflow.com/questions/60720

سؤال

ما هي أفضل طريقة بالنسبة لي لتحديد قيمة متغير وحدة التحكم أثناء التنفيذ؟

على سبيل المثال، هل هناك طريقة يمكنني من خلالها إدراج فاصل في الكود، والتسبب في إخراج قيمة المتغير إلى الشاشة (أو السجل)؟

هل كانت مفيدة؟

المحلول

نعم.أسهل طريقة هي رفع القيمة كسلسلة.مثل ذلك: raise @foo.to_s

أو يمكنك تثبيت مصحح الأخطاء (gem install ruby-debug)، ثم قم بتشغيل خادم التطوير باستخدام الملف --debugger علَم.ثم، في التعليمات البرمجية الخاصة بك، اتصل بـ debugger تعليمات.

داخل موجه مصحح الأخطاء، لديك العديد من الأوامر، بما في ذلك p لطباعة قيمة المتغير.

تحديث: هنا المزيد عن روبي التصحيح.

نصائح أخرى

إذا كان لديك متغير مثيل وحدة تحكم اسمه @foo, ، ثم في وحدة التحكم الخاصة بك يمكنك ببساطة القيام بشيء مثل:

logger.debug "@foo is: #{@foo}"

بالإضافة إلى ذلك، يمكنك إخراج القيمة في قالب العرض الخاص بك باستخدام:

<%= debug @foo %>

أفضّل استخدام طريقة الفحص كما يلي:

raise @foo.inspect

يحتوي على معلومات أكثر من to_s، مثل قيم السمات.

ملخص من جوردي بونستر وجون توبلي وجاريل:

أنا.طريقة سريعة وقذرة:

raise @foo.inspect

في وحدة التحكم الخاصة بك.أو

<% raise @foo.inspect %>

في وجهة نظرك.

ثانيا.التسجيل السليم لك development.log:

logger.debug "@foo == #{@foo.inspect}"

ثالثا. التصحيح الكامل:

تثبيت المصحح (gem install ruby-debug)، ثم قم بتشغيل خادم التطوير باستخدام الملف --debugger علَم.ثم، في التعليمات البرمجية الخاصة بك، اتصل بـ debugger تعليمات.

داخل موجه مصحح الأخطاء، لديك العديد من الأوامر، بما في ذلك p لطباعة قيمة المتغير.

يعد رفع الاستثناء هو أسرع طريقة إذا كنت بحاجة فقط إلى إلقاء نظرة على قيمة ما، ولكن الأمر يستحق الوقت لمعرفة كيفية استخدام مصحح الأخطاء بشكل صحيح.من النادر أنك ستحتاج فقط إلى رؤية قيمة المتغير، ومن المحتمل أنك تحاول العثور على خطأ في التعليمات البرمجية الخاصة بك، وهذا هو الغرض من مصحح الأخطاء.

يعد إرسال المعلومات إلى سجل التطوير أبطأ من أي من الخيارين الآخرين هنا حتى الآن إذا تعلمت كيفية استخدام مصحح الأخطاء (الذي يريد قراءة ملفات السجل).استخدم المسجل للإنتاج، وسوف ترغب في معرفة القيمة عندما يتصل بك شخص ما ويقول لك أن كل شيء معطل.

حسنًا، عادةً ما أفضّل إخراج الخطأ القياسي

$stderr.print("مهما كان")

انها بسيطة وتقوم بهذه المهمة.

  1. يضيف حركات نقب إلى جيمفيل: gem 'pry-moves'
  2. إدراج binding.pry حيث تريد التوقف
  3. اكتب اسم المتغير لمعرفة قيمته

ثم تابع بالكتابة c, ، انتقل إلى السطر التالي مع n أو قم بتنفيذ إجراءات تصحيح أخرى حتى تتمكن من حل المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top