كيفية استخدام تطبيق الرف في روبي

click fraud protection

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

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

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

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

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

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

WEBrick

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

instagram viewer

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

#! / usr / bin / env ruby
تتطلب "رف"
فئة HelloWorld
استدعاء def (env)
ارجع [200، {}، ["Hello world!"]]
النهاية
النهاية
Rack:: Handler:: WEBrick.run (
HelloWorld.new ،
: المنفذ => 9000
)

Rackup

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

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

فئة HelloWorld
استدعاء def (env)
إرجاع [
200,
{'Content-Type' => 'text / html'} ،
["مرحبا بالعالم!"]
]
النهاية
النهاية
قم بتشغيل HelloWorld.new

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

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

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

instagram story viewer