لماذا روبي أون ريلز جيد وكيف يسرع التنمية



هذا المنشور هو ترجمة لمقال للمبرمج Krzysztof Kopidlowski مخصص لاستكشاف فوائد Ruby on Rails. ستكون المادة ذات أهمية في المقام الأول للمبرمجين المبتدئين وعندها فقط للمهنيين.

يمكن أن يوفر لك Ruby on Rails الوقت الذي تقضيه عادة في التطوير. فقط لأنه عند استخدام هذا الإطار ، سيكون الرمز أقل وستظل الوظيفة كما هي.

توصي Skillbox بما يلي: دورة تدريبية عملية "Web Developer Web Developer" .

نذكرك: لجميع قراء "هبر" - خصم 10000 روبل عند التسجيل في أي دورة من دورات Skillbox باستخدام الرمز الترويجي "Habr".

من جافا إلى روبي


بالنسبة لي ، العمل مع روبي هو توفير الوقت الحقيقي. يمكنني التركيز على الأساليب والمنطق ، بدلاً من العبث مع الكثير من الأسطر البرمجية بسطر. كنت أعتقد أن Java هي لعبة تغيير ، ولكن بعد التعرف على Ruby on Rails ، أعجبت أكثر.

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

ولكن ماذا لو أخبرتك أنه يمكن الاستغناء عن عشرات الخطوط؟



هذه هي روبي - لغة برمجة عالية المستوى موجهة ديناميكية وعاكسة ومفسرة. لديها تطبيق متعدد الوظائف مستقل عن نظام التشغيل ، وكتابة ديناميكية قوية ، ومجمع القمامة ، والعديد من الميزات الأخرى. لقد كتب الكثير من تطبيقات الويب ، بما في ذلك GitHub و Twitter.

روبي يقلل من كود


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

على سبيل المثال ، إذا كان لديك مصفوفة وتريد زيادة جميع العناصر بمقدار 2 ، ثم إرجاعها بترتيب عكسي في Java ، فسيبدو الرمز كما يلي (باستخدام واجهة القائمة):

import java.util.*; import java.util.stream.Stream; import static java.util.Collections.reverseOrder; import static java.util.stream.Collectors.toList; public class MyClass { public static void main(String args[]) { List<Integer> list = Stream.of(1, 2, 3) .map(val -> val + 2) .sorted(reverseOrder()) .collect(toList()); list.forEach(System.out::println); } } 

نفس الشيء في روبي سيبدو كما يلي:

المصفوفة = Array.new (5،2)
array.map {| x | x + 2}. عكس

الفرق واضح. ولا تحتاج إلى استيراد الفئات.

الكتابة الديناميكية


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

إذا كنت تكتب طريقة تأخذ معلمتين ، فلا تحتاج إلى تحديد أنواعها ، بدلاً من ذلك يمكنك فقط التركيز على المنطق. النتيجة: كود أقل ، بينما جودة أكثر وأنظف.

يحتوي Ruby أيضًا على العديد من الأساليب الخاصة التي تسرع الترميز. عند كتابة البرامج ، غالبًا ما أستخدم تحويل Hash إلى Array ، ثم إلى JSON. في روبي ، يمكنني تنفيذه بخط واحد فقط!

على القضبان


إطار عمل روبي الأكثر شهرة هو ريلز. إنه يوفر تقريبًا نفس الوظيفة للغة مثل Spring for Java. أود مشاركة بعض نتائجي التي قد تكون مفيدة لك.

جميع نقاط النهاية في مكان واحد

أحد الأشياء التي تعجبني في Rails هو أنني بحاجة إلى ملف واحد فقط لإعلان جميع نقاط النهاية الخاصة بي. يمكنني دائمًا استخدام طرق rake $ للأمر الطرفي من أجل رؤيتها. يعد هذا خيارًا رائعًا للمشاريع الكبيرة عندما تحتاج إلى القيام بشيء بناءً على ما تم كتابته بالفعل.

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

لا يلزمك استخدام معلمات مختلفة لنفس نقاط النهاية. في Rails ، بشكل افتراضي ، يمكنك تمرير أي معلمات إلى نقطة النهاية والتحقق من صحة تلك التي تريد استخدامها في وحدة التحكم.

def user_params
params.require (: user) .permit (: name ،:name ،: birth_date ،: avatar)
النهاية

قواعد بيانات القضبان

يتم تسجيل جميع عمليات الترحيل هنا في التطبيق ، لذا فإن إعداد قاعدة بيانات على أجهزة مختلفة يرجع إلى تنفيذ أمر واحد: $ bundle rake db: setup. وبالتالي ، ليس هناك حاجة إلى عميل خارجي لتكوين قاعدة البيانات أو استخدامها.

لا ، لن تكون قاعدة البيانات التي قمت بإنشائها ونقلها إلى جهاز آخر فارغة: في تطبيق Rails الخاص بك يوجد ملف يسمى seeds.rb يمكنك من خلاله تحديد جميع السجلات للنماذج المختلفة اللازمة للتطبيق للعمل. ونتيجة لذلك ، يحتاج النموذج إلى بضعة أسطر من التعليمات البرمجية.

يحتوي الأمر $ bundle rake db: setup على ثلاث وظائف:

  • إنشاء قاعدة بيانات إذا لم تكن موجودة بالفعل ؛
  • تدير جميع عمليات الترحيل ؛
  • يقوم بإدخال جميع بيانات المصدر من ملف البذور الخاص بك.

الشفرة نظيفة حقًا: يكتب ActiveRecords ببساطة الطرق التي تحتاج إلى تنفيذها ، وليس السمات.

في إطار عمل Hibernate لـ Java ، تحتاج إلى تسجيل كافة السمات مع التعليقات التوضيحية ، ثم تحديد السمات التي تحتاج إلى تعديلها. في هذه الحالة ، تحصل على كمية كبيرة من التعليمات البرمجية على الإخراج.

في Rails ، يأخذ نفس الشيء سطرًا واحدًا. يتم حفظ مخطط قاعدة البيانات في ملف schema.rb ، الذي يتم إنشاؤه تلقائيًا عند بدء الترحيل. والصف لا يحتاج إلى مستوطنين أو صفات. عندما تكون هناك حاجة إلى هذا الأخير ، سيكون كافيًا للكتابة: Model.attribute - وهذا كل شيء.

كما ذكر أعلاه ، مع Rails ، يمكنك التركيز على منطق وطرق مشروعك ، بدلاً من التركيز على التعليمات البرمجية.



الخلاصة


يمنحك Ruby on Rails أدوات قوية مثل الكتابة الديناميكية أو تصحيح الأخطاء التي تسرع عملية البرمجة بشكل جيد.

إذا كنت ترغب في الحصول على دورة تدريبية في تطوير تطبيقات الويب ، فتأكد من محاولة كتابة تطبيق Rails صغير لفهم كيفية عمله. لم يفت الأوان أبدًا لتعلم شيء جديد - حتى إذا كنت تفضل الأدوات التقليدية.

Source: https://habr.com/ru/post/ar428487/


All Articles