أساسيات Sinatra
تطبيقات ويب خفيفة
أساسيات Sinatra درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ما Sinatra؟
Sinatra هي DSL خفيفة لبناء تطبيقات الويب باستخدام Ruby بأقل جهد.
- لا تفرض اصطلاحات ثقيلة مثل Rails
- تعرّفون المسارات مباشرةً في ملف واحد
- مثالية للتطبيقات الصغيرة وواجهات API والنماذج الأولية
تصفون أفعال HTTP والمسارات، ثم تعيدون جسم الاستجابة.
require 'sinatra'
get '/' do
'Hello from Sinatra!'
endتثبيت Sinatra
Sinatra هي gem. يمكنكم تثبيتها باستخدام الأمر gem أو عبر Gemfile.
gem install sinatra- أو أضيفوا
gem 'sinatra'إلى Gemfile وشغّلواbundle install
شغّلوا تطبيقكم باستخدام ruby app.rb، وسيقدّم الخدمة على المنفذ 4567 افتراضيًا.
# Gemfile
source 'https://rubygems.org'
gem 'sinatra'
gem 'puma'مساركم الأول
يربط المسار بين فعل HTTP ومسار URL وكتلة. وتصبح القيمة التي تعيدها الكتلة جسم الاستجابة.
- تطابق
getوpostوputوdeleteطرق HTTP - تُرسل العبارة الأخيرة في الكتلة إلى العميل
require 'sinatra'
get '/hello' do
'Hello, world!'
end
get '/bye' do
'Goodbye!'
endإعادة HTML
بما أن قيمة الإرجاع ليست سوى سلسلة، يمكنكم إعادة HTML خام مباشرةً.
- يفيد ذلك في إنشاء صفحات سريعة من دون محرّك قوالب
- في التطبيقات الفعلية، فضّلوا عروض ERB أو HAML
require 'sinatra'
get '/' do
'<h1>Welcome</h1><p>This is my Sinatra app.</p>'
endنمذجة استجابة باستخدام Ruby عادي
قبل ربط ذلك بـ HTTP، يمكنكم نمذجة ما يعيده المعالج باستخدام دالة عادية. هذا هو المنطق الذي سيستدعيه المسار.
- أبقوا منطق الأعمال خارج كتل المسارات
- يجعل ذلك اختبار التعليمات البرمجية ممكنًا من دون خادم
def greeting(name)
"Hello, #{name}!"
end
puts greeting('Sinatra')أفعال HTTP
تدعم Sinatra جميع أفعال HTTP الشائعة بصفتها طرقًا للمسارات.
- يقرأ
getالبيانات - ينشئ
postالبيانات - يحدّث
putوpatchالبيانات - يحذف
deleteالبيانات
require 'sinatra'
post '/users' do
'Creating a user'
end
delete '/users/:id' do
"Deleting user #{params['id']}"
endضبط رموز الحالة
يمكنكم التحكم في رمز الحالة لـ HTTP باستخدام المساعد status.
- يضبط
status 404الحالة «غير موجود» - يشير
status 201إلى إنشاء مورد - القيمة الافتراضية هي 200 OK
require 'sinatra'
get '/missing' do
status 404
'Not found'
endالإعداد باستخدام set
تُضبط Sinatra باستخدام set وenable وdisable.
- يغيّر
set :port, 8080منفذ الاستماع - يقبل
set :bind, '0.0.0.0'الاتصالات الخارجية - يفعّل
enable :loggingسجلات الطلبات
require 'sinatra'
set :port, 8080
set :bind, '0.0.0.0'
get '/' do
'Configured app'
endمرشحات before
يعمل مرشح before قبل كل طلب مطابق. وهو مناسب لإعدادات مثل المصادقة أو ترويسات المحتوى.
- يعمل في السياق نفسه الذي تعمل فيه المسارات
- يمكنه قراءة
paramsوترويسات الاستجابة وتعديلهما
require 'sinatra'
before do
content_type :json
end
get '/' do
'{"ok": true}'
endالتطبيقات المعيارية
استخدموا النمط المعياري في المشاريع الأكبر عبر توريث Sinatra::Base.
- يعزل التطبيقات المتعددة عن بعضها
- يسهّل تركيبها ضمن Rack
- استدعوا
run!لبدء تشغيله يدويًا
require 'sinatra/base'
class MyApp < Sinatra::Base
get '/' do
'Modular Sinatra'
end
end
MyApp.run!محاكاة موجّه محليًا
يمكنكم محاكاة منطق التوجيه في Sinatra باستخدام موزّع بسيط مبني على Hash لفهم المفهوم.
- المفاتيح هي المسارات، والقيم هي إجراءات المعالجة
- يعيد البحث جسم الاستجابة
routes = {
'/' => -> { 'Home' },
'/about' => -> { 'About us' }
}
puts routes['/'].call
puts routes['/about'].callاختبار سريع
اختبروا فهمكم لأساسيات Sinatra.
مراجعة
تعلّمتم أساسيات Sinatra:
- Sinatra هي DSL خفيفة للويب، تُثبّت باعتبارها gem
- تربط المسارات بين فعل HTTP ومسار وكتلة
- قيمة الإرجاع من الكتلة هي جسم الاستجابة
- استخدموا
statusوsetومرشحاتbeforeللتحكم - ترث التطبيقات المعيارية من
Sinatra::Base
بعد ذلك، ستتعاملون مع المسارات الديناميكية وparams.
الأسئلة الشائعة
هل درس «أساسيات Sinatra» مجاني؟
نعم — نص درس «أساسيات Sinatra» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «أساسيات Sinatra»؟
تطبيقات ويب خفيفة تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «أساسيات Sinatra»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.