مثير للإعجاب

باستخدام الرف

باستخدام الرف

في المقالة السابقة ، تعلمت ما هو الرف. الآن ، حان الوقت للبدء في استخدام Rack وتقديم بعض الصفحات.

مرحبا بالعالم

أولاً ، لنبدأ بتطبيق "Hello world". سيعود هذا التطبيق ، بصرف النظر عن نوع الطلب الذي يتم تقديمه ، برمز حالة يبلغ 200 (وهو HTTP- تتحدث عن "OK") والسلسلة "مرحبا بالعالم" كما الجسم.

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

تطبيق Rack هو أي كائن Ruby يستجيب لطريقة الاتصال ، ويأخذ معلمة تجزئة واحدة وإرجاع صفيف يحتوي على رمز حالة الاستجابة ، ورؤوس استجابة HTTP ونص الاستجابة كصفيف من السلاسل.
فئة HelloWorld
دعوة def (env)
إرجاع 200 ، {} ، "مرحبًا أيها العالم!"
النهاية
النهاية

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

WEBrick

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

لاحظ أن هذه ليست طريقة مثالية لإطلاق الأشياء باستخدام Rack. يظهر فقط هنا لتشغيل شيء ما قبل الغوص في ميزة أخرى لـ Rack تسمى "Rackup" ، والتي تظهر أدناه. استخدام Rack :: Handler بهذه الطريقة لديه بعض المشكلات. أولا ، ليس شكلي جدا. كل شيء هو الثابت ترميز في البرنامج النصي. ثانياً ، كما ستلاحظ إذا قمت بتشغيل البرنامج النصي التالي ، لا يمكنك قتل البرنامج. لن يستجيب ل Ctrl-C. إذا قمت بتشغيل هذا الأمر ، فما عليك سوى إغلاق نافذة الجهاز الطرفية وفتح نافذة جديدة.

#! / usr / bin / env ruby
تتطلب "رف"
فئة HelloWorld
دعوة def (env)
إرجاع 200 ، {} ، "مرحبًا أيها العالم!"
النهاية
النهاية
رف :: :: معالج WEBrick.run (
HelloWorld.new،
: ميناء => 9000
)

Rackup

على الرغم من أن هذا سهل للغاية ، إلا أنه لا يتم استخدام Rack بشكل طبيعي. يستخدم الرف عادة مع أداة تسمى rackup. يقوم Rackup بعمل ما هو أكثر أو أقل في الجزء السفلي من الكود أعلاه ، ولكن بطريقة أكثر قابلية للاستخدام. يتم تشغيل Rackup من سطر الأوامر ، ويتم إعطاء .ru "ملف Rackup". هذا مجرد برنامج نصي Ruby يقوم ، من بين أشياء أخرى ، بتغذية تطبيق على Rackup.

سيبدو ملف Rackup الأساسي لما ذكر أعلاه شيئًا كهذا.

فئة HelloWorld
دعوة def (env)
إرجاع
200,
{'Content-Type' => 'text / html'} ،
"مرحبا بالعالم!"

النهاية
النهاية
تشغيل HelloWorld.new

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

إذا قمت بتشغيل الأمر rackup helloworld.ru، سيبدأ خادم على المنفذ 9292. هذا هو منفذ Rackup الافتراضي.

Rackup لديه بعض الميزات أكثر فائدة. أولاً ، يمكن تغيير أشياء مثل المنفذ في سطر الأوامر ، أو في سطر خاص في البرنامج النصي. في سطر الأوامر ، ببساطة تمر في ميناء ف معامل. فمثلا: rackup -p 1337 helloworld.ru. من البرنامج النصي نفسه ، إذا كان السطر الأول يبدأ بـ #، ثم يتم تحليلها تمامًا مثل سطر الأوامر. حتى تتمكن من تحديد الخيارات هنا أيضا. إذا كنت تريد تشغيله على المنفذ 1337 ، يمكن قراءة السطر الأول من ملف Rackup # -p 1337.


شاهد الفيديو: ركبت رف باستخدام الدريل تعالو شوفو كيف صار (ديسمبر 2021).