محتويات الدورة
Ruby
الأساسيات: القيم والطرق والنص والكائنات الصالحة
العقود: الاستدعاء والتقييم والإخفاق ونماذج القيم
التكامل: البيانات والموارد وأدلة التنفيذ والثقة

Ruby / التكامل: البيانات والموارد وأدلة التنفيذ والثقة / الدرس 18

مراجعة سياسة استيراد أرشيف بنتائج محددة وحدود واضحة

اجمع التحويل الصارم وكائنات النتائج الصريحة والأنماط وعد الرفض الكامل والأدلة الصادقة في مشروع محلي.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • احفظ نتيجة مفهومة لكل سجل معطى قبل التجميع.
  • افصل سياسة Ruby المحلية من ضمانات التخزين والتفويض والتزامن والاستعادة الفعلية.

حدّد الوعد المحلي الصغير بدقة

يستقبل المشروع كميات نصية ثابتة لسجلات افتراضية. يقبل 1 إلى 50 ويميّز الصياغة من النطاق ويلخص المقبول. لا يعدل أرشيفا أو يحجز نسخا أو ينشئ ملفات أو يتصل بقاعدة أو يرسل. تحتاج Data نسخة 3.2 أو أحدث ضمن مرجع 3.3. يحتاج الاستيراد الحقيقي أيضاً إلى سلطة موثقة بالمصادقة، ومعلومات أصل المصدر، وهوية ثابتة للطلب وبروتوكول يمنع تكرار أثره عند إعادة المحاولة، وحالة دائمة، ومسار تعافٍ. أبق الغائب واضحا ولا تمنح السكربت جاهزية إنتاج غير مستحقة.

امنح القبول والرفض بيانات كل منهما

يحمل Accepted عددا و Rejected رمز سبب مستقرًا. يفحص المحلل نوع المدخل والتحويل والنطاق الافتراضي بخطوات. تفك case/in الناتج للعرض. لا تغلق Ruby هذه الأصناف ساكنا؛ فوضّح عقد المنتج والمستهلك، إذ قد تكسر نتيجة مفاجئة المعالجة. وقد يتجاوز البناء العام المحلل، فيحدد التصميم الأكبر موضع الإنشاء الموثوق. يبقي المثال كل مدخل ظاهرا ولا يخفي المرفوض بالترشيح.

ruby نتائج Data صريحة وعرض بالأنماط
Accepted = Data.define(:value)
Rejected = Data.define(:reason)
def parse_count(text)
  return Rejected.new(reason: 'not-text') unless text.is_a?(String)
  value = Integer(text.strip, 10, exception: false)
  return Rejected.new(reason: 'not-an-int') if value.nil?
  return Rejected.new(reason: 'out-of-range') unless value.between?(1, 50)
  Accepted.new(value: value)
end
['2', 'bad', '0'].each do |text|
  case parse_count(text)
  in Accepted[value]
    puts "accepted:#{value}"
  in Rejected[reason]
    puts "rejected:#{reason}"
  end
end
الناتج المتوقع
accepted:2
rejected:not-an-int
rejected:out-of-range

المخرج المتوقع accepted:2 ثم rejected:not-an-int ثم rejected:out-of-range. يستخدم المصدر Data والأنماط الموثقة 3.3 ولم يُنفذ.

اختر هل يحفظ الملخص أدلة الرفض المفصلة

لا يستعيد عد المرفوض أسبابه وارتباطه بالمصدر. إذا لزمت التفاصيل فاحفظ الكائنات واجمع فوقها. يعيد الثاني مجاميع فقط بسياسة معلنة. تزيل compact رفض nil وتحفظ Integer المثبتة؛ وليست filter_map عامة قد تحذف false مقصودة. يتجنب المدخل الصغير ادعاء مقياس موارد. حد الحقيقي عدد السجلات والحجم والنتائج وحدّد القبول الجزئي قبل إعلان النجاح.

افصل الحساب من آثار العرض

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

ruby ملخص محلي بعد رفض ظاهر
def summarize(texts)
  values = texts.map do |text|
    value = Integer(text.strip, 10, exception: false)
    value if value && value.between?(1, 50)
  end
  accepted = values.compact
  {accepted: accepted.length, rejected: values.length - accepted.length, total: accepted.sum}
end
summary = summarize(['2', 'bad', '0', '3'])
puts "accepted=#{summary.fetch(:accepted)}"
puts "rejected=#{summary.fetch(:rejected)}"
puts "total=#{summary.fetch(:total)}"
الناتج المتوقع
accepted=2
rejected=2
total=5

المخرج المتوقع accepted=2 ثم rejected=2 ثم total=5. لا يخزن سجل ولا يحدث أثر خارجي. لم يحلل Ruby المصدر أو ينفذه أثناء التأليف.

اختم بأدلة تطابق الادعاء الفعلي

افحص غير النص والمشوه والصفر والسالب والواحد والخمسين وفوقها والمسافات والعادي معزولا بمفسر متوافق. تحقق من كل نتيجة وعدم إخفاء العيب وعمق النسخ والتجميد. وللحقيقي افحص التزامن المرجعي وفشل التخزين وتكرر الهوية والاستعادة مستقلة. تتحقق الدورة من بنية JSON وحقولها التقنية اللغوية دون تنفيذ Ruby. ميّز بوضوح المخرج المحلل والخطة والتشغيل الفعلي والمطالب التشغيلية غير المختبرة.

الأخطاء الشائعة وإصلاحها

تختفي سجلات مرفوضة من استيراد يبدو كاملا.

لماذا يحدث؟
استبدل الترشيح عقد نتيجة صريحة لكل سجل.
كيف تصلحه؟
احفظ التفاصيل أو أعلن القبول الجزئي صراحة.
كيف تتجنب تكراره؟
حدّد الاكتمال قبل التجميع.

يفرض مستهلكان نطاقي كمية مختلفين.

لماذا يحدث؟
انحرف التحقق بين تمثيلات مستقلة.
كيف تصلحه؟
شارك النموذج المتحقق أو حد السياسة المشتركة المقصود.
كيف تتجنب تكراره؟
افحص الحدود المستقلة نفسها لكل المستهلكين.

يُسمى ملخص محلي استيرادا إنتاجيا متحققا.

لماذا يحدث؟
أُهملت المسؤوليات التشغيلية وغياب دليل التنفيذ.
كيف تصلحه؟
اذكر النطاق المحلي وتحقق من كل أثر عند حده.
كيف تتجنب تكراره؟
أبلغ فقط الأوامر والنتائج المرصودة فعليا.

اختبر فهمك

1. ما التغيير إذا وجب حفظ السبب الأصلي لكل سجل مرفوض؟

اعرض الحل المشروح

احفظ Accepted أو Rejected لكل مدخل بمرجع المصدر واستخرج المجاميع منه. لا يستعيد العد وحده الأسباب. قرّر حفظ الخام وفق سياسة البيانات وافصل الرمز الآلي عن العرض المترجم. لا تنتقل لحذف الخطأ إذا اشترط المنتج ملاحظات كاملة.

2. سم ثلاثة حدود أدلة قبل تحويل المشروع لخدمة حقيقية.

اعرض الحل المشروح

نفذ السياسة محليا في المحرك والمكتبات المعلنة أولا، ثم تحقق من تفويض الطرف والمورد وانتقالات الحالة ومنها التزامن، ثم هوية الطلب الدائمة والتخزين ونتائج الخارج والاستعادة. قد يحتاج كل حد فحوصا عدة. لا تثبت طباعة مجموع متوقع ضمانات خدمة غائبة.

أهم ما تعلمته

  • تحفظ كائنات النتائج الصريحة المعنى قبل التجميع.
  • يفصل المشروع الصادق الدلالات المحلية من الضمانات التشغيلية غير المختبرة.

المراجع الرسمية