سیناترا یک میکروفریم‌ورک برای ساخت وب اپلیکیشن‌ها با روبی است. بسته‌ای که شاید اولین مدل از فریم‌ورک‌های مینیمالی باشد که اصطلاح میکروفریم‌ورک به آن‌ها اطلاق گشت و بعدها در زبان‌ها دیگر نمونه‌هایی با الهام از سیناترا ساخته شد.

سیناترا در سال ۲۰۰۷ توسط بلیک میزرانی طراحی شد و نام آن را به دلایل علاقه‌ی شخصی اش به خواننده و موسیق‌دان فقید امریکایی، فرانک سیناترا، سیناترا گذاشت. فریم ورکی که همچنان توسط جمعی از بهترین برنامه‌نویسان روبی نگه‌داری و توسعه داده میشود.

این نوشته یک قسمت از مجموعه آموزش‌های روبی است.

نصب

سیناترا را میتوانید به راحتی از روی مخازن روبی جمز با دستور زیر نصب کنید :
gem install sinatra


سیناترا چگونه کار میکند؟


یکی از ویژگی‌های مهم سیناترا سادگی ساخت برنامه‌ها با آن است. معمولا این سادگی تا آن حد پیش می‌رود که بسیاری از برنامه‌های ساخته شده با سیناترا در یک فایل سر و تهش هم می آید. از نگاه فنی به ساختار سیناترا، سیناترا یک DSL ساخته شده به زبان روبی است که با متدهایی همنام متدهای http مسیرهای وب اپلیکیشن را طراحی و توسعه می‌دهد.

سیناترا روی Rack ساخته شده است. Rack معروفترین استاندارد و البته پیاده سازی همنام خود به عنوان واسط بین وب‌سرور و زبان روبی است که سیناترا و ریلز و بسیاری دیگر از معروفترین فریم‌ورک‌های ساخته شده با روبی روی این بستر ساخته شده اند.

یک برنامه ساده با سیناترا

در این قسمت یک برنامه‌ی ساده با سیناترا مینویسیم که ابتدا به دنیا و سپس به نوبی سلام میکند.

در سیناترا به طور معمول دو روش برای ساخت برنامه ها داریم : روش کلاسیک و روش مدرن. در این قسمت به روش کلاسیک برنامه ها را مینویسیم. تفاوت این دو روش استفاده کردن یا نکردن از کلاس‌ها و وراثت از سیناترا در آن است. در روش کلاسیک مسیرها و برنامه ها به سادگی قابل درکند.

برای شروع ابتدا یک فایل روبی با نام دلخواهتان مثلا hello.rb بسازید و سیناترا را در آن لود کنید :
require 'sinatra'

سلام دنیا

در سیناترا برنامه‌ها بر اساس مسیرها ساخته میشوند. منظور از مسیر، مسیر در url است. به طور مثال noobi.ir/page/ruby یک url است که حاوی مسیر  /page/rubyبر روی دامنه‌ی noobi.ir است. مسیر صفحه‌ی اصلی noobi.ir هم / است. قطعه کد زیر عبارت سلام دنیا را روی صفحه‌ی اصلی نمایش میدهد :
get '/' do
    "سلام دنیا"
end

  • برای تعریف محتوای یک مسیر ابتدا دستور http مورد نظر می‌آید که get و post متداولترین این دستورات است. در مورد این متدها بیشتر بخوانید ...
  • پس از متد http، مسیر مورد نظر را به عنوان یک رشته یا یک عبارت منظرم مینویسم که دراینجا مسیر ریشه یعنی '/' نوشته شده است.
  • برنامه‌ای که باید در مسیر مورد نظر اجرا شود را بین do و end مینویسیم.
در اینجا برنامه ی ما صرفا یک رشته با محتوای "سلام دنیا" است. بله؟ خب همانطور که میدانید آخرین مقدار در یک متد در روبی، مقدار return است و به همین دلیل مقدار این رشته در صفحه نمایش داده می‌شود.


سلام نوبی

برای درک بهتر از مسیرها مثال بالا را در یک مسیر غیر از مسیر ریشه هم مینویسیم :
get '/noobi' do
    "سلام نوبی"
end
حالا برنامه‌ی خود را که اجرا کنید، در مسیر /noobi مقدار سلام نوبی نمایش داده می‌شود.


اجرای برنامه

یک ترمینال باز کنید، به مسیری که فایل برنامه تان را در آن ذخیره کرده اید بروید و دستور زیر را اجرا کنید :
ruby hello.rb
که بجای hello.rb نام فایل خودتان را بنویسید. پس از اجرای این دستور چیزی شبیه محتوای زیر در خط فرمان نمایش داده میشود و پس از نمایش آن یعنی برنامه‌ی نوشته شده‌ی شما درحال اجراست :
== Sinatra (v1.4.7) has taken the stage on 4567 for development with backup from Thin
Thin web server (v1.6.4 codename Gob Bluth)
Maximum connections set to 1024
Listening on localhost:4567, CTRL+C to stop

حالا مرورگر خود را باز کنید و به آدرس localhost:4567  بروید و به مسیرهای ساخته شده‌تان سری بزنید. اگر مثال های این آموزش را نوشته باشید میتوانید در مسیر ـ و ـ خروجی را در مرورگر خود ببینید.

در قسمتهای آینده با سیناترا بیشتر آشنا میشویم. همچنین کدهای این برنامه که نوشتیم را میتوانید روی گیست این برنامه بیابید.