ما هي فوائد روبي أون ريلز؟ بعد عقدين من البرمجة ، أستخدم ريلز

نشرت: 2022-03-11

أحيانًا أسمع أشخاصًا يشكون من عملائهم ، قائلين إنهم يصرون على استخدام ريلز ، وأنهم حصلوا على الكثير من المساعدة كوول. إذا كانوا مجندين ، فإنهم يكادون يشعرون بالمرض بسبب الاضطرار إلى العثور على مطور Ruby on Rails 'primadona' آخر. ثم قاموا بسحب شيء مشابه لهذه المقارنة الجهلة بشكل مذهل بين Git و PHP لإثبات وجهة نظرهم. يقولون "إنهم لا يعرفون حتى ما الذي يطلبونه".

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

سأحاول شرح ما ، في رأيي ، الذي يجعل ريلز مفيدة بما يكفي لأخذها في الاعتبار بجدية لعدد كبير من المشاريع والاحتياجات.

فوائد روبي

من المحتمل ألا يعرف أحد عن مزايا روبي لولا ريلز نفسها. يحب بعض الناس التقليل من شأن روبي بالقول إنه "سهل جدًا على روبي" من خلال "الفارس في درعه اللامع المسمى ريلز" وأنه بدون ريلز ، "لن تكون روبي ذات صلة". لا أستطيع أن أقول على وجه اليقين ما إذا كان هذا صحيحًا أم لا ، لكنني أعلم أنه سيكون عارًا كبيرًا إذا فات العالم مثل هذه اللغة الرائعة. الحقيقة هي أن مؤلف كتاب ريلز اختار روبي عمدًا ، وقد أتى رهانه "الجامح" باهتمام كبير. ما رآه في ذلك الوقت ، يمكن للعديد من الآخرين رؤيته اليوم. يمكّن روبي المبرمجين بطريقة ما بطريقة خاصة من الصعب جدًا شرحها لـ "الجماهير غير المغسولة". إذن ، لماذا تستخدم روبي أون ريلز؟ روبي تجعل المبرمجين سعداء ، كما هو معلن.

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

 "1".to_i #=> 1 class String def to_i raise 'foobar' end end "1".to_i #=> RuntimeError: foobar

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

 class String def to_i self.to_f - 1.13 end end "2".to_i #=> 0.8700000000000001

تمامًا مثل ذلك ، أدخلنا خطأ في فئة String يمكن تغليفه وإخفائه بطبقة فوق طبقة من التعقيد.

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

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

فائدة أخرى هي أن روبي هي أداة متعددة الاستخدامات. على هذا النحو ، لها حواف حادة تشبه السكين. أحب أن أعتقد أن الكبار يمكنهم التعامل مع السكاكين على ما يرام - إن حماية الأطفال هي ، حسنًا ، للأطفال (سقسقة). والمعاملة كطفل في مجال تكنولوجيا المعلومات تجعلك ضحية لمفارقة بول جراهام بلوب: تعتقد أنك أفضل حالًا بدون ميزات معينة لا تفهمها أو أن شخصًا ما أخبرك أنك خطير للغاية. بالطبع ، نسأل اليوم "لماذا نستخدم Ruby on Rails" ؛ وبالتالي ، هذا نقاش لوقت آخر. من المسلم به أن روبي يفقد بعض الميزات التي تمتلكها اللغات الأخرى (Lisp hmm، hmm). الكل في الكل ، روبي قريب من الجزء العلوي من "سلسلة قوة اللغة".

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

البراغماتية

هناك احترام عميق للبراغماتية المنسوجة في الحمض النووي لريلز عند أدنى مستوى ممكن. بالاقتران مع مزايا Ruby ، ​​تنتج هذه البراغماتية حلولًا أنيقة وتشجع / تلهم مجتمع تطوير Ruby on Rails لفعل الشيء نفسه. غالبًا ما يتم الإعلان عن البراغماتية كخيمة ريلز ، لذا فإن هذا الادعاء ليس جديدًا ، لكن تم تذكيرني بصدقه مؤخرًا عندما حاول أحد أصدقائي أن يوضح لي مدى "روعة" السبات. كان يكافح. شعرت بألمه لأنه لم يكن قادرًا على تعيين عدد لا يحصى من الخيارات ومعلمات التكوين التي كان ينبغي أن تكون افتراضية لإطار العمل في المقام الأول.

مع تقدم العمر ، نمت معايير التعقيد الاصطناعي الخاصة بي أعلى وأعلى. بالنظر إلى أنني بدأت في كتابة رمز الإنتاج في عام 1989 في سن 11 عامًا (بدءًا من مشروع لجاري المجاور في Clipper Summer '87) ، فأنا لا أتسامح مطلقًا مع المضاعفات غير الضرورية. وقد حققت ريلز نتائج عالية جدًا في هذا القسم. إنها أكثر من مجرد "اصطلاح على التكوين" ؛ إنني أتحدث عن العقلية البراغماتية الكاملة التي تحظى بتقدير كبير داخل مجتمع ريلز وتتخللها.

التعبير

ريلز قريبة من اللغة الإنجليزية كما هي (إلا إذا كنت تستخدم COBOL). يستخدم ما يعرف باسم DSL الداخلي ، مما يمد Ruby بدلالاته الخاصة. يعد إنشاء DSL أمرًا خطيرًا دائمًا لأنك تقوم بتطوير لغة جديدة بشكل فعال. نظرًا لأنه داخلي ، فأنت لست بحاجة إلى استخدام محلل خارجي ، ولكن بمعنى ما يبدو وكأنه لغة جديدة. حقق فريق ريلز توازنًا جيدًا مع DSL الخاص به ، حيث استخدمه حيثما كان ذلك منطقيًا ونادرًا ما يبالغ في المبالغة فيه ، مما يدل على قدرة ممتازة على التحكم في النفس. أعتقد أن أي مبرمج ، بغض النظر عن خبرة ريلز (وحتى بعض غير المبرمجين) يمكنه فهم هذا:

 class User < ActiveRecord::Base devise :database_authenticatable, :registerable validates_numericality_of :years_of_experience, :allow_blank => true acts_as_taggable acts_as_taggable_on :certificates, :expertise_kinds validates_presence_of :first_name, :last_name, :email has_many :translations has_attached_file :avatar, :styles => {:small => "240x240>"} has_attached_file :cv ...

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

تواصل اجتماعي

ريلز لديها جيش من الملتزمين الذين يتأكدون من بقائه في حالة جيدة. تنضج العديد من المشاريع مع تقدم العمر ، ولكن مع ريلز ، لا تزال الشرارات تتطاير عند الحاجة إلى اتخاذ القرارات. يبدو أن المشرفين (لا يزالون) يهتمون حقًا ويريدون من الناس استخدام Ruby on Rails وفهم فوائدها.

تنضج العديد من المشاريع مع تقدم العمر ، ولكن مع ريلز ، لا تزال الشرارات تتطاير عند الحاجة إلى اتخاذ القرارات.
سقسقة

تحت ريلز نفسها ، ككرز في المقدمة ، تقف روبي مع مدير الحزم الهائل ، RubyGems ، الذي يمكن مقارنته بـ CPAN من حيث عدد الحزم - وبالنظر إلى عمر CPAN ، فإن هذا الادعاء (بعبارة ملطفة) مثير للإعجاب للغاية. تعرضت ريلز لانحراف قصير عن مسارها عندما حاولت إنشاء "ملحقات ريلز" الخاصة بها. لحسن الحظ ، لم يبق هذا الأمر ثابتًا ، لذلك تظل RubyGems المصدر الموحد والرائع للكود المبرمج من قبل أفراد بارعين للغاية.

إن التآزر بين لغة رائعة وإطار عمل ويب عملي ومجتمع رائع يمنح ريلز نتيجة أفضل بكثير من مجموع أجزائه.

نضج

كانت ريلز حول الكتلة. بطريقة محببة ، لم يعد الأمر رائعًا بعد الآن. يعد هذا أمرًا جيدًا عندما يتعلق الأمر باختيار مجموعة تقنيات: فأنت تريد شيئًا مثبتًا. وريلز هو ذلك بالضبط. لقد كتبنا مؤخرًا مقالاً يتحدث عن مجموعة كبيرة من مترجمي Ruby الفوريين وأوقات التشغيل المتوفرة الآن.

تسويق

اعلم اعلم. بصفتي متخصصًا في تكنولوجيا المعلومات ، يجب أن أقدر حقًا الأشياء "الجادة" وأن أتجاهل "اللمعان" . قد يبدو سطحيًا ، لكن دعنا نواجهه:

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

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

(لا) إعادة اختراع العجلة

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

المعضلة هنا: كم مرة تريد أن تكتب نفس الأشياء مرارًا وتكرارًا؟ أنا متأكد من أنه يمكن إعادة كتابة بعضها بشكل أفضل ، لكن الأمر يستغرق وقتًا - الكثير من الوقت. كلما سمحت لريلز بالقيام به من أجلك ، قل قلقك بشأن إعادة كتابة وظائفك أو إعادة تنفيذها.

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

خاتمة

اسأل نفسك مرة أخرى ، لماذا تستخدم Ruby on Rails؟ تعتبر ريلز مناسبة لكل من مواقع الويب العامة الحديثة التي تتنافس مع تطبيقات JavaScript ذات الصفحة الواحدة ، وتطبيقات النظام الأساسي المعقدة للمؤسسات التي تبدو عادةً "أقبح" قليلاً (مع واجهة مستخدم أكثر عمومية وأقل دقة) ، ولكنها تعوض ذلك تشوبه شائبة مع الكثير من قواعد العمل المعقدة والمنطق. وتتمثل فائدتها في أنها متعددة الاستخدامات وقادرة على التنافس مع كل من الأنيق والأقوياء.

بالنسبة لمعظم المشكلات الشائعة ، تحتوي ريلز على مكون تحت تصرفك تقريبًا خارج الصندوق مع وثائق أعلى باستمرار من المتوسط ​​(بطريقة ما ، أقنع فريق ريلز الأساسي المساهمين بأن كتابة التوثيق أمر رائع (على الرغم من أننا نعلم جميعًا أنه not) ، مما يؤدي إلى مستندات مكتوبة جيدًا وموجزة وموفرة للوقت).

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

ذات صلة: اقتطاع الطابع الزمني: حكاية ActiveRecord روبي على القضبان