ویرگول
ورودثبت نام
[ Taha. Dostifam ]
[ Taha. Dostifam ]
خواندن ۶ دقیقه·۱ سال پیش

Power of RubyOnRails!


تو این پست میخوام درباره فریمورک روبی آن ریلز که برای توسعه WebApplication ساخته شده حرف بزنم و اینکه چرا نسبت به دیگر فریمورک ها ترجیحش میدم.

?روبی آن ریلز چیه؟ از کجا اومد؟

روبی آن ریلز توسط David Heinemeier Hansson (DHH) در سال 2004 بوجود اومد.

وقتی شیخ دیوید داشت روی یک اپلیکیشن وب به اسم Basecamp کار میکرد متوجه شد که فریمورک های موجود چرا اینقد سنگینن؟ ینی کمتر قابل حمل هستن... و برای توسعه یک وب اپلیکیشن خیلی زمان بر هستن.
پس با خودش دو دو تا چهارتا کرد گفت چرا فریمورک خودم رو ننویسم؟

پس بعد از فقط ۴ سال که روبی ساخته شده بود... ریلز هم شروع به خلق شدن کرد. سپس روبی آن ریلز release شد و بین دولوپر ها بشدت محبوبیت پیدا کرد و حتی الان هم که الانه جامعه بزرگی داره و میتونه جوابگوی همه نوع وب اپلیکیشن از کوچیکش (Startup) گرفته تا بزرگش (large-scale enterprise) باشه.


ویژگی های کلی RoR :

  • سرعت عمل در توسعه (Rapid Development) ⚡️
    ریلز با توانایی سهولت بخشیدن به روند توسعه معروف شد. بطوری که سیستم CoC و Dry-Code ش به دولوپر هاش این امکان رو میده که اپلیکشن های موثر تر و قدرتمند تری رو بسازند. با ریلز دولوپر ها قادرند در چندین روز یا حتی در چند ساعت وب اپلیکیشن هایی خلق کنند که ساختن اون ها با فریمورک های دیگه ممکنه تا هفته ها طول بکشه.
  • بهره وری بالا (High Productivity) ?
    ریلز با ابزار ها و کتابخونه های built-in ای که خودش ارائه میده خیلی راحت دولوپر میتونه bussines-logic ش رو تعریف کنه و خیلی راحت تبدیلش کنه به یک Api یا یک WebApplication. این باعث میشه که دولوپر بیشتر روی bussines-logic متمرکز بشه تا کار های پیش و پا افتاده و تکراری ای مثل database-management یا routing یا حتی authentication!
  • انعطاف پذیری (Flexibility)?
    ریلز Flexibility بسیار بسیار بالایی داره و به زبون دیگه Highly-Customizable هست!!!
    شیء گرایی سطح بالای روبی و دنیای اوپن سورس محیطی رو برای ریلز فراهم کرده که دولوپر خیلی راحت میتونه به توسعه کتابخونه ها و یا کاستومایز کردن اون ها بپردازه. و البته شاید کلید اصلی در شیوه شیء گرایی روبی باشه. همه چیز module هست. پس اگه نیازش نداشتید یا میخواستید تغییری توش ایجاد بکنید... بهش بگید... همین کفایت میکنه تا کار شما با بالاترین کیفیت راه بیوفته.

    یک اصطلاحی در جامعه برنامه نویسان روبی آن ریلز هست
    که میگه : `Everything is like tools on a kitchen`

    درواقع این منظور داره که همه چیز... از چاقو و قوری و قابلمه و هرچیز شبیهی که بخواید همیشه همون جایی هست که باید باشه. هیچوقت قرار نیست برای پیدا کردنش اعصابتون رو بهم بریزید یا زمان زیادی روش صرف بکنید.
  • مقیاس پذیری (Scalability) ?
    همچنین ریلز برعکس انتظار سایر دولوپر ها بسیار Scalability بالایی داره! چرا که ریلز قادر به هندل کردن مقدار زیادی از data و traffic هست. همچنین ریلز ابزار هایی بسیار قدرتمند برای اینکار داره مثل Caching یا load-balancing یا database-sharding که باعث میشه با بالا رفتن Scale پروژه data و traffic تحت کنترل باشه.
  • امنیت (Security) ✅
    تا جایی که ساختار ریلز خیلی ساده و قابل درک هست پس منطقا ایجاد امنیت نباید کار دشواری باشه.
    ریلز ساخته شده که تا در مقابل بسیاری از آسیب پذیری ها در امان باشه بدون اینکه دولوپر رو درگیرش بکنه. و آسیب پذیری هایی مانند XSS و CSRF و SQL Injection و غیره.

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


ریلز بعنوان یک فریمورک Full-Stack!

درواقع روبی آن ریلز ابزار های واقعا ویژه ای رو برای سریعتر هندل کردن فرانت اند ارائه میده :

  • بهینه سازی ?
    ریلز با توجه به AssetPipeline قدرتمندی که داره هر لحظه آماده ست که asset های شما رو در محیط پروداکشن Minify و Compress کرده باشه و این یعنی سرعت لود سایت بیشتر و پرفرمنس بهتر.
  • تمپلیت های ERB✨
    روبی قالب خاصی برای نوشتن view ها داره که باعث میشه دولوپر بتونه داخل فایل Html کد روبی بنویسه و قالب فرانت رو از سمت بک اند کنترل کنه. احتمالا این یه مورد خیلی به چشم نمیاد اما فقط دولوپر های ریلز میدونن ERB Template چقدر قدرتمنده??.
  • ادغام با فریمورک های JavaScript ?
    ریلز تقریبا با بیشتر فریمورک های فرانت اند میتونه ادغام باشه مثل (Angular, React, Vue, Svelte, etc).
    دولوپر ها میتونن به توسعه اپلیکیشن های بسیار پیچیده بپردازن درحالی که ریلز قدرتمند در سمت بک اند در حال اعمال نفوذ به فرانته.
  • توربولینک! (یکی از مهم ترین فیچر های ریلز) ?
    اگر شما فرانت کار باشید متوجه هستید که یک فریمورک فرانت مثل ریکت اگر بخشی از سایت تغییر کند runtime این وظیفه رو به عهده داره که تنها و تنها اون بخش از Element-Tree رو دوباره رندر بکنه درحالی که به دیگر بخش ها هیچ اتفاقی نیوفته.

    بنظرتون ممکنه یک فریمورک بک اند همچین چیزی فراهم کنه؟
    جواب :‌ نمیدانم!!

    این قابلیت در Rails-v7 اضافه شد که تقریبا بیشتر طرفداران ریلز از جمله خودم مات مبهوت در حال نگریستن به این فیچر عظیم بودیم... کتابخونه Turbolink این قابلیت رو ارائه میده که با استفاده AJAX تنها یک بخش کوچیکی از سایت آپدیت بشه و سایت همچنان ریلود نشده باقی بمونه! درواقع عینا و کاملا مثل یک SPA یا single-page application عمل میکنه!? بدون نیاز به فریمورک های واقعا پیچیده فرانت اند... و احتمالا متوجه شدید که بیشتر سایت های امروزی همچین قابلیتی رو ندارن و کاربر مجبوره لحظات دشوار زیادی رو صبر کنه تا سایت دوباره از نو بالا بیاد...?

چه شرکت هایی از Rails استفاده میکنن؟

چندتا از بزرگترین شرکت هایی که میشناسید دارن ریلز استفاده میکنن.
اگر خودم انتخاب کنم دوس دارم اول Github رو بگم?. پاتوق اکثر طرفداران دنیای اوپن سورس! که با ریلز توسعه یافته که میتونید وقتی تو گیت هاب میچرخید به فیچر هاش فکر بکنید که چطور با روبی آن ریلز هندل شدن و چرا گیت هاب مثل یک WebApplication واقعا سریع عمل میکنه.

همینطور شرکت بزرگ Airbnb که یک شرکت بازار آنلاین و اقامت و گردشگری هست هم سال های زیادی هست که کاربر روبی آن ریلز هستن و همچنان ازش استفاده میکنند و راضی اند.

شرکت های Basecamp و Hulu و SoundCloud و Twitch و Square و Zendesk هم کاربران ریلز هستن.


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

لایک و کامنت فراموش نشه!❤️✨

rubyruby on railsزبان برنامه نویسی روبی rubyروبیآشنایی با زبان برنامه نویسی روبی
Full-stack web developer
شاید از این پست‌ها خوشتان بیاید