0Pricing
Ruby Academy · درس

أساسيات 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات Sinatra
  2. المسارات والمعلمات
  3. واجهات JSON البرمجية
  4. البرمجيات الوسيطة وRack
← العودة إلى Ruby Academy