stanford-oval/wikipedia huggingface dataset:
روبی (زبان برنامه‌نویسی)

با روبی آن ریلز اشتباه نشود.
| 0 | 1 |
| --- | --- |
پارادایم برنامه‌نویسی: چندپارادایم: شیءگرا، دستوری، تابعی، رفلکشن
طراحی شده توسط: یوکیهیرو ماتسوموتو
توسعه‌دهنده: یوکیهیرو ماتسوموتو و همکاران.
ظهوریافته در: ۱۹۹۵؛ ۳۰ سال پیش (۱۹۹۵-خطا: زمان نامعتبر}})
انتشار پایدار: ۳٫۰٫۰    / ۲۵ دسامبر ۲۰۲۰؛ ۴ سال پیش (۲۰۲۰-25}})
 :  
شیوه نوع‌دهی: اردکی، پویا
دامنه: واژگانی، گاهی پویا
زبان پیاده‌سازی: سی
سیستم‌عامل: چندسکویی
پروانه: روبی، GPLv2 یا پروانه‌های بی‌اس‌دی مجوز
پسوند(های) نام پرونده: .rb, .rbw
وبگاه: www.ruby-lang.org
پیاده‌سازی‌های بزرگ: پیاده‌سازی‌های بزرگ
روبی ام‌آرآی، یارو، روبی‌نیوس، ماگلو، جی‌روبی، مک‌روبی، روبی‌موشن، هات‌روبی، آیرون‌روبی، ام‌روبی: روبی ام‌آرآی، یارو، روبی‌نیوس، ماگلو، جی‌روبی، مک‌روبی، روبی‌موشن، هات‌روبی، آیرون‌روبی، ام‌روبی
متأثر از: متأثر از
ایدا، سی++, سی‌ال‌یو، دایلان، ایفل، لوآ، لیسپ، پرل، پایتون، اسمال‌تاک: ایدا، سی++, سی‌ال‌یو، دایلان، ایفل، لوآ، لیسپ، پرل، پایتون، اسمال‌تاک
تأثیر گذاشته بر: تأثیر گذاشته بر
کلوژر، دی، الیکزیر، فالکن، گرووی، آی‌وک، جولیا، میراه، نو، پوشن، ریا، سوئیفت: کلوژر، دی، الیکزیر، فالکن، گرووی، آی‌وک، جولیا، میراه، نو، پوشن، ریا، سوئیفت
   Ruby Programming    در ویکی‌کتاب (انگلیسی):    Ruby Programming    در ویکی‌کتاب (انگلیسی)
روبی (به انگلیسی: Ruby) یک زبان برنامه‌نویسی انعطاف‌پذیر، وب،تست نفوذ، پویا و شیءگرا است. روبی ویژگی‌های نگارشی پرل و شی گرایی اسمال‌تاک را با هم در خود دارد. زبان روبی در سال‌های میانی دهه ۱۹۹۰ توسط یوکیهیرو ماتسوموتو در ژاپن اختراع شد. ویژگی‌های گوناگون زبان‌های پرل، لیسپ، اسمال‌تاک و آیفل الهام‌بخش ماتسوموتو در ساخت روبی بودند.
زبان روبی پارادایم‌های گوناگون برنامه‌نویسی از جمله برنامه‌نویسی تابعی، شیء گرا و بازتابی را پشتیبانی می‌کند، دارای گزاره‌ها و متغیرهای پویا و مدیریت حافظه خودکار است.
نسخه فعلی این زبان روبی ۲٫۳٫۳ است که به زبان سی و به صورت زبانی با مفسر تک‌گذره پیاده‌سازی شده‌است.
تا سال ۲۰۱۰، گونه‌های مختلفی از زبان روبی توسعه یافته‌اند که از میان آن‌ها می‌توان به جی‌روبی، روبینوس، مک‌روبی، آیرن‌روبی و هات‌روبی، ام روبی اشاره کرد.
تاریخچه

زبان روبی رسماً در روز ۲۴ فوریه ۱۹۹۳ (۵ اسفند ۱۳۷۱) توسط یوکیهیرو ماتسوموتو معرفی شد. او دنبال ساخت زبانی بود که امکانات متعادلی برای برنامه‌نویسی تابعی و برنامه‌نویسی دستوری برای برنامه‌نویس فراهم آورد. ماتسوموتو دربارهٔ انگیزه‌اش برای ساخت روبی می‌گوید: «در جستجوی زبانی بودم که از پایتون شیءگراتر و از پرل قدرتمندتر باشد. برای همین تصمیم گرفتم خودم آن را بسازم».
تاریخچه > نام «روبی»

یوکیهیرو ماتسوموتو و همکارش دو نام «روبی» و «کورال» را برای این زبان جدید برگزیده بودند. از آنجاییکه نام کورال پیش از آن برای یکی از زبان‌های برنامه‌نویسی بریتانیایی انتخاب شده بود(کورال)، نام «روبی» به عنوان نام نهایی برگزیده شد. ماتسوموتو گفته که یکی از دلایل انتخاب نام «روبی» این بود که یاقوت (به انگلیسی: Ruby) نشان ماه تولد یکی از همکاران وی بوده‌است.
تاریخچه > اولین انتشار

نخستین ویرایش روبی با عنوان روبی ۰٫۹۵ در ۲۱ دسامبر ۱۹۹۵ (میلادی) (۳۰ آذر ۱۳۷۴) روی یکی از شبکه‌های تخصصی اینترنتی در ژاپن منتشر شد. پس از آن، سه ویرایش دیگر رویی در ظرف دو روز انتشار یافتند. در همین دوره نخستین لیست پست الکترونیک برای روبی در ژاپن براه افتاد.
تاریخچه > روبی ۱٫۰

نخستین نسخه اصلی روبی با عنوان روبی ۱٫۰ در ۲۵ دسامبر ۱۹۹۶ (۵ دی ۱۳۷۵) منتشر شد. پس از انتشار روبی ۱٫۳ در سال ۱۹۹۹، نخستین لیست پست الکترونیک به زبان انگلیسی آغاز بکار کرد. در سپتامبر سال ۲۰۰۰ نخستین کتاب راهنمای برنامه‌نویسی به زبان روبی به انگلیسی به چاپ رسید که به افزایش محبوبیت این زبان در کشورهای مختلف کمک کرد.
تاریخچه > روبی ۱٫۹٫۱

جدیدترین نسخه پایدار روبی، نسخهٔ ۱٫۹٫۱ است که نسبت به نسخهٔ پیشین (۱٫۸٫۶) چند تغییر عمده در خود دارد. از جمله تغییرات مهم می‌توان به افزودن متغیرهای محلی در «بلوک»‌های روبی، و امکان تنظیم کدگذاری رشته‌ها به صورت مستقل از هم اشاره کرد.
تاریخچه > روبی ۲٫۰

پس از نسخه ۱٫۹ نسخهٔ ۲٫۰ منتشر خواهد شد.
از اکتبر ۲۰۱۱ برنامه‌ریزی شده‌است که کدهای روبی در اکتبر ۲۰۱۲ فریز شود و در فوریه ۲۰۱۲ منتشر شود.
تاریخچه > روبی ۲٫۱

نسخه ۲٫۱ در کریسمس سال ۲۰۱۳ منتشر شد. این بروزرسانی شامل، افزایش سرعت، و به روزرسانی کتابخانه‌ها، و تعمیر باگ، بود.
در ۲۱ آپریل ۲۰۱۷، اعلام شد که دیگر از این نسخه پشتیبانی نمی‌شود.
تاریخچه > روبی ۲٫۴

روبی ۲٫۴٫۰ در کریسمس سال ۲۰۱۶ منتشر شد و تغییرات قابل توجه عبارتند از:
اتصال #irb: شروع یک جلسه REPL مشابه اتصال .pry
یکی کردن Fixnum و Bignum به کلاس عدد صحیح(Integer)
String supports Unicode case mappings, not just ASCII
a new method, Regexp#match?, which is a faster boolean version of Regexp#match
Thread deadlock detection now shows threads with their backtrace and dependency
شاخه ۲٫۴ همچنین شامل بهبود عملکرد هش جدول، آرایه#حداکثر، آرایه#دقیقه و به عنوان مثال دسترسی متغیرها است.
تاریخچه > روبی ۲٫۵

روبی ۲٫۵٫۰ در کریسمس سال ۲۰۱۷ منتشر شد. چند تغییر قابل توجه، شامل موارد زیر است:
rescue and ensure statements automatically use a surrounding do-end block (less need for extra begin-end blocks)
Method-chaining with yield_self
Support branch coverage and method coverage measurement
Easier Hash transformations with Hash#slice and Hash#transform_keys
On top of that come a lot of performance improvements like faster block passing (3 times faster), faster Mutexes, faster ERB templates and improvements on some concatenation methods.
تاریخچه > روبی ۲٫۶

روبی ۲٫۶٫۰ در کریسمس سال ۲۰۱۸ منتشر شد. چند تغییر قابل توجه، شامل موارد زیر است:
JIT (experimental)
RubyVM::AbstractSyntaxTree (experimental)
تاریخچه > روبی ۲٫۷

روبی ۲٫۷٫۰ در کریسمس سال ۲۰۱۹ منتشر شد. چند تغییر قابل توجه، شامل موارد زیر است:
Pattern Matching (experimental)
REPL improvement
Compaction GC
Separation of positional and keyword arguments
تاریخچه > روبی ۳٫۰

روبی ۳٫۰٫۰ در کریسمس سال ۲۰۲۰ منتشر شد. چند تغییر قابل توجه، شامل موارد زیر است:
Performance
MJIT
Concurrency
Ractor
Fiber Scheduler
Typing (Static Analysis)
RBS
TypeProf
جدول نسخه‌ها

| نسخه | آخرین نسخه کوچک | تاریخ انتشار اولیه | پایان مرحله پشتیبانی | پایان فاز نگهداری امنیتی |
| --- | --- | --- | --- | --- |
| نگارش قدیمی، دیگر پشتیبانی نمی‌شود: ۱٫۰ | ن/م | ۱۳۷۵٫۱۰٫۰۵ | ن/م | ن/م |
| نگارش قدیمی، دیگر پشتیبانی نمی‌شود: ۱٫۸ | ۱٫۸٫۷-پی۳۷۵ | ۱۳۸۲٫۰۵٫۱۳ | ۱۳۹۱٫۰۴٫۱۰ | ۱۳۹۳٫۰۴٫۱۰ |
| نگارش قدیمی، دیگر پشتیبانی نمی‌شود: ۱٫۹ | ۱٫۹٫۳-پی۵۵۱ | ۱۳۸۶٫۱۰٫۰۴ | ۱۳۹۲٫۱۲٫۰۴ | ۱۳۹۳٫۱۲٫۰۴ |
| نگارش قدیمی، دیگر پشتیبانی نمی‌شود: ۲٫۰ | ۲٫۰٫۰-پی۶۴۸ | ۱۳۹۱٫۱۲٫۰۶ | ۱۳۹۳٫۱۲٫۰۵ | ۱۳۹۴٫۱۲٫۰۵ |
| نگارش قدیمی، دیگر پشتیبانی نمی‌شود: ۲٫۱ | ۲٫۱٫۱۰ | ۱۳۹۲٫۱۰٫۰۴ | ۱۳۹۵٫۰۱٫۱۱ | ۱۳۹۶٫۰۱٫۱۰ |
| نگارش قدیمی، دیگر پشتیبانی نمی‌شود: ۲٫۲ | ۲٫۲٫۱۰ | ۱۳۹۳٫۱۰٫۰۴ | ۱۳۹۶٫۰۱٫۰۸ | ۱۳۹۷٫۰۱٫۱۱ |
| نگارش قدیمی، دیگر پشتیبانی نمی‌شود: ۲٫۳ | ۲٫۳٫۸ | ۱۳۹۴٫۱۰٫۰۴ | ۱۳۹۷٫۰۳٫۳۰ | ۱۳۹۸٫۰۱٫۱۱ |
| نگارش قدیمی، دیگر پشتیبانی نمی‌شود: ۲٫۴ | ۲٫۴٫۱۰ | ۱۳۹۵٫۱۰٫۰۵ | ۱۳۹۸٫۰۱٫۱۲ | ۱۳۹۹٫۰۱٫۱۳ |
| نگارش قدیمی‌تر، هنوز پشتیبانی می‌شود: ۲٫۵ | ۲٫۵٫۸ | ۱۳۹۶٫۱۰٫۰۴ | ن/م | ن/م |
| نگارش قدیمی‌تر، هنوز پشتیبانی می‌شود: ۲٫۶ | ۲٫۶٫۶ | ۱۳۹۷٫۱۰٫۰۴ | ن/م | ن/م |
| نگارش قدیمی‌تر، هنوز پشتیبانی می‌شود: ۲٫۷ | ۲٫۷٫۲ | ۱۳۹۸/۱۰/۰۴ | ن/م | ن/م |
| نگارش پایدار جاری: ۳٫۰ | ۳٫۰٫۰ | ۱۳۹۹/۱۰/۰۵ | ن/م | ن/م |
ایجاز:نگارش قدیمینگارش قدیمی‌تر، هنوز پشتیبانی می‌شودنگارش پایدار جاریآخرین نگارش پیش‌نمایشانتشار آتی: ایجاز:نگارش قدیمینگارش قدیمی‌تر، هنوز پشتیبانی می‌شودنگارش پایدار جاریآخرین نگارش پیش‌نمایشانتشار آتی
چهارچوب‌های نرم‌افزاری

روبی آن ریلز چهارچوب محبوب و مورد علاقهٔ اکثر برنامه نویسان روبی است که در سال ۲۰۰۵ توسط آقای David Heinemeier Hansson یا به اختصار DHH بنیان‌گذاری شد، به‌طور دیگر می‌توان گفت اکثر برنامه‌نویسان توسط ریلز به روبی کشیده شده‌اند! نام‌های «روبی» و «روبی آن ریلز» آنقدر با هم استفاده شده‌اند که برای بسیاری شاید تفاوت این دو روشن نباشد.
سیناترا یکی دیگر از فریمورک‌های قدرتمند روبی است که ساختار بسیار سبک‌تری نسبت به روبی آن ریلز دارد و ساختار پایه‌ای آن شامل مدیریت کردن مسیرها است (نکته: اما در صورت نیاز می‌توان بسته‌های روبی آن ریلز را در آن وارد کرد). سیناترا توسط Blake Mizerany ساخته شده و از معماری MVC برخوردار است.
پادرینو یک چهارچوب کوچک با توابع کمکی بسیار کاربردی است. یکی از مهم‌ترین مزایای پادرینو، داشتن generator است که به توسعه نرم‌افزار کمک شایانی می‌کند.
فلسفه

سازنده زبان روبی یوکیهیرو ماتسوموتو می‌گوید روبی برای افزایش توان تولید و تفریح برنامه‌نویسان طراحی شده‌است و از اصل رابط کاربری خوب پیروی می‌کند. او تأکید می‌کند که طراحی سامانه‌ها باید بیشتر روی نیاز انسان‌ها متمرکز باشد تا رایانه‌ها.
اغلب مردم، به ویژه برنامه‌نویسان، روی ماشین‌ها تمرکز می‌کنند. آن‌ها فکر می‌کنند «با انجام این کار ماشین‌ها سریعتر می‌شوند، ماشین‌ها در اجرا موثرتر می‌باشند و…» آن‌ها بر ماشین تمرکز می‌کنند، اما در حقیقت ما نیاز داریم که به انسان‌ها توجه کنیم، اینکه چگونه آن‌ها به برنامه‌نویسی توجه دارند یا چگونه به اجرای برنامه‌های ماشین دقت می‌کنند.
روبی برای تعقیب هدف کمترین غافلگیری بیان شدبه این معنی که زبان باید طوری رفتار کند که کمترین گیج‌کنندگی را برای استفاده‌کننده‌های آن داشته باشد. ماتسوموتو همچنین اظهار می‌دارد که هدف اولین طراحی او درست کردن زبانی که خودش از آن لذت ببرد بود. این کار با کم کردن کار برنامه‌نویس و ابهامات منطقی می‌باشد. اما کمترین غافلگیری هنوز خیلی به بیان زبان برنامه‌نویسی روبی نزدیک است.
افراد ناشی شاید این را به این معنا تعبیر کنند که رفتارهای روبی سعی در متصل کردن اشتراکات رفتارهای دیگر زبان‌ها را دارد.
در بحث ماه مه ۲۰۰۵ در روزنامه "کامپ. لنگ. روبی" ماکسوموتو تلاش کرد که روبی را از حداقل غافلگیری دور کند. توضیح اینکه هر شانس طراحی بعضی‌ها را متعجب می‌کند.
او از استاندارد خود برای ارزیابی غافلگیری استفاده کرد. ماتسوموتو این را در یک گزارش مطرح ساخت.
همه یک پیشینه شخصی دارند، بعضی‌ها از جانب پایتون می‌آیند بعضی‌های دیگر از پرل و آن‌ها ممکن است از بعضی از جنبه‌های متفاوت زبان غافلگیر شوند. سپس آن‌ها به من می‌گویند ما از بعضی از جنبه‌های زبان غافلگیر شدیم، بنابرین روبی قانون کمترین غافلگیری را زیر پا گذاشته‌است. صبر کنید… هدف کمترین غافلگیری فقط برای شما نیست. این هدف به معنای کمترین غافلگیری ممکن برای بیان من می‌باشد. این به معنای کمترین غافلگیری بعد از آموزش کامل زبان است.

برای مثال من قبل از اینکه روبی را طراحی کنم یک برنامه‌نویس سی پلاس پلاس بودم. من منحصراً دو، سه سال در سی پلاس پلاس برنامه نوشتم و بعد از دو سال برنامه‌نویسی با آن، هنوز مرا متعجب می‌کرد.
معنی‌شناسی

روبی شی گراست: همه انواع داده شی هستند، از جمله کلاس‌ها و خیلی از انواع داده‌ای که به‌طور معمول در بقیه زبان‌ها نیز هست مانند داده صحیح، دودویی و…. تابع به صورت متد است. روبی ارث‌بری را با فرستادن پویا و متدهای یکتا پشتیبانی می‌کند (متعلق به، تعریف شده برای، یک نمونه تک به جای تعریف شدن در کلاس). همچنین روبی از ارث بری چندگانه پشتیبانی می‌کند. نحو رویه‌ای پشتیبانی می‌شود، اما همهٔ متدها که خارج از حوزه یک شی خاص تعریف می‌شوند همه آن در حقیقت متدهای شی یک کلاس هستند. تا زمانی که این کلاس والد کلاس دیگر است تغییرات برای همه کلاس‌ها و شی‌ها ممکن است. روبی به عنوان یک زبان برنامه‌نویسی چند مدلی تشریح شده. در روبی اجازهٔ برنامه‌نویسی رویه‌ای، شیءگرا و تابعی داده شده.
بر طبق سوالات متداول روبی «اگر تو به پرل علاقه‌مند باشی روبی را هم دوست خواهی داشت و می‌توانی از نحو آن استفاده کنی. اگر اسمالتالک را دوست داری روبی را هم دوست خواهی داشت و می‌توانی از معنای آن لذت ببری و اگر طرفدار پایتون هستی تو ممکن است تفاوت عمده‌ای بین پایتون و روبی پیدا کنی یا که نه.»
امکانات

کاملاً شی گرا
داینامیک
نحو کوتاه و انعطاف‌پذیر
چهار سطح از حوزه دید متغیر شامل: global, class ,instance ,local
مدیریت استثناء
پشتیبانی از iterators و closures (بر اساس تبادل بلوک‌های کد)
پشتیبانی محلی از regular expressions (شبیه پرل) در سطح زبان
سربارگزاری عملگرها
جمع‌آوری زباله خودکار
قابلیت حمل بالا
در همه سیستم‌عامل اصلی پیاده‌سازی
پردازش استثناء
سربار اپراتور
پشتیبانی شراکتی از multi-threading در تمام پلتفرم‌های با استفاده از green threads
پشتیبانی کامل از یونیکد و رمزنگاری‌های شخصیت چند گانه (از نسخه ۱٫۹)
کتابخانه‌های اشتراکی/DLL در اکثر پلتفرمها
introspection, reflection و meta-programming
اتصال بومی APIها در C
پوسته تعاملی روبی (REPL)
بسته مدیریت متمرکز از طریق RubyGems
کتابخانه استاندارد بزرگ
پشتیبانی از تزریق نیازمندی
continuations و generators
امکانات > تعامل

توزیع استاندارد روبی دارای یک مفسر تعاملی خط فرمان بنام irb است که می‌تواند برای آزمایش سریع کد بکار رود. یک نشست با این برنامه تعاملی به صورت زیر است:
$ irb
 irb(main):001:0> puts "Hello, World"
 Hello, World
=> nil
 irb(main):002:0> 1+2
 => 3
همچنین وجود ماژول readline به کاربر امکان استفاده از shellهای مختلف را با پشتیبانی از تاریخچه تغییرات می‌دهد.
Readline.readline('', true) # param true means ~  "enable history"
سینتکس

سینتکس روبی بسیار شبیه سینتکس پرل و پایتون است. اعلان کلاس‌ها و متدها توسط کلمات کلیدی انجام می‌شود. در مقایسه با پرل متغیرها الزاماً با یک علامت خاص شروع نمی‌شوند. (وقتی از چنین علائمی استفاده شود علامت حوزه دید متغیر را تغییر می‌دهد) بارزترین تفاوت روبی از سی و پرل آنست که کلمات کلیدی (بجای براکت) برای تعریف بلوک‌های کد استفاده می‌شوند. سطر جدید به‌عنوان پایان یک جمله بکار برده می‌شود در عین حال که برای اینکار می‌توان از یک سمی کالون (;) نیز استفاده کرد. تورفتگی‌ها معنی خاصی ندارند (برعکس پایتون).
نمونه‌هایی از سینتکس روبی را می‌توانید در بخش مثال‌ها ببینید.
چیزهای غافلگیرکننده

با وجود اینکه طراحی روبی بر اصل عدم غافلگیری استوار است، به‌طور طبیعی برخی امکانات آن از زبان‌هایی مانند سی و پرل متفاوت است:
نام‌هایی که با حرف بزرگ شروع می‌شوند به عنوان ثابت (constant) در نظر گرفته می‌شوند، بنابراین متغیرهای محلی بایستی با حروف کوچک آغاز شوند.
به منظور وضوح مقادیر اعشاری (float)، بایستی با یک صفر بعد از نقطه مشخص شوند (۹۹٫۰) یا اینکه از یک تبدیل صریح (99.to_f) استفاده شود. تنها اضافه کردن یک نقطه بعد از عدد (.۹۹) کافی نیست زیرا در این حالت اعداد مستعد پذیرش به‌عنوان یک متد هستند.
مقادیر بولین اطلاعات غیر بولین سخت گیرانه هستند: ۰، “” و [] برابر با true هستند. در سی عبارت ۰: ۱ ? ۰ برابر با صفر (همان false) است درحالی‌که در روبی نتیجه آن ۱ است زیرا تمام اعداد برابر true هستند و فقط nil و false برابر false هستند. یک نتیجه فرعی از این عمل آنست که در روبی متدها بر طبق قرارداد -- برای مثال یک جستجوی regular-expression – در صورت موفقیت اعداد، رشته‌ها، لیستها یا سایر مقادیر غیر false را برمی‌گردانند، و در صورت شکست nil برمی‌گردانند. این قرارداد در اسمال‌تاک هم بکار می‌رود که تنها اشیاء مخصوص true و false می‌توانند در عبارات بولین استفاده شوند.
در نسخه‌های ماقبل از ۱٫۹ عدم وجود نوع داده کاراکتر (در مقایسه با سی که نوع داده char را برای کاراکترها داراست) ممکن غافلگیرکننده باشد. در هنگام بریدن رشته‌ها [۰]“abc” مقدار ۹۷ را برمی‌گرداند (یک integer که شماره کد اسکی اولین حرف رشته‌است)، برای به‌دست آوردن “a” باید از [۰٬۱]“abc” (یک زیر رشته بطول ۱) یا "abc"[0].chr استفاده کرد.
در ضمن برخی مسائل در مورد خود زبان برجسته است:
در مورد سرعت، عملکرد روبی در قیاس با بسیاری از زبان‌های کامپایل شده پایین‌تر است (همانند هر زبان تفسیر شده دیگر) و همچنین در قیاس با زبان‌های اسکریپت‌نویسی اصلی مانند پرل و پایتون همین حالت وجود دارد. هرچند که در نسخه‌های آینده روبی به صورت بایت کد (bytecode) کامپایل خواهد شد و بر روی YARV (خلاصه Yet Another Ruby VM) اجرا خواهد شد. در حال حاضر حافظه بکار رفته در برنامه‌های نوشته شده در روبی کمتر از حافظه بکار رفته در همان برنامه‌ها که با پرل و پایتون نوشته شده‌اند، است.
حذف پرانتزهای متدها در روبی ممکن است به نتایج غیرمنتظره‌ای در متدهایی با چند آرگومان منتج شود. توجه کنید که توسعه دهندگان روبی اشاره کرده‌اند که حذف پرانتزها در متدهایی با چند آرگومان در آینده ممنوع خواهد شد. در هر صورت حذف پرانتزها در متدهای تک آرگومان توصیه می‌شود.
مثال‌ها

مثال کلاسیک Hello world:
puts "Hello World!"
مقداری کد اساسی روبی:
# Everything, including a literal, is an object, so this works:
 -199.abs                                       # 199
 "ruby is cool".length                          # 12
 "Rick".index("c")                              # 2
 "Nice Day Isn't It?".split(//).uniq.sort.join  # " '?DINaceinsty"
مثال‌ها > Collections

ایجاد و استفاده از یک آرایه:
a = [1, 'hi', 3.14, 1, 2, [4, 5]]

 a[2]                      # 3.14
 a.reverse                 # [[4, 5], 2, 1, 3.14, 'hi', 1]
 a.flatten.uniq            # [1, 'hi', 3.14, 2, 4, 5]
ایجاد و استفاده از یک هش:
hash = {:water => 'wet', :fire => 'hot'}
 puts hash[:fire]                  # Prints:  hot

 hash.each_pair do |key, value|    # Or:  hash.each do |key, value|
   puts "#{key} is #{value}"
 end

 # Prints:  water is wet
 #          fire is hot

 hash.delete_if {|key, value| key == water}         # Deletes :water => 'wet'
مثال‌ها > Blocks and iterators

هر دو سینتکس برای ایجاد یک بلوک کد:
{ puts "Hello, World!" }

== do puts "Hello, World!" end ==
ارسال پارامتر به یک بلاک تا یک closure شود:
# In an object instance variable, remember a block.
 def remember(&b)
    @block = b
 end

 # Invoke the above method, giving it a block that takes a name.
 remember {|name| puts "Hello, #{name}!"}

 # When the time is right (for the object) -- call the closure!
 @block.call("John")
 # Prints "Hello, John!"
بازگشت closure از یک متد:
def foo(initial_value=0)
   var = initial_value
   return Proc.new {|x| var = x}, Proc.new { var }
 end

 setter, getter = foo
 setter.call(21)
 getter.call           # => 21
دادن جریان کنترل یک برنامه به یک بلوک که در هنگام فراخوانی ایجاد شده:
def a
    yield "hello"
 end

 # Invoke the above method, passing it a block.
 a {|s| puts s}        # Prints: 'hello'

 # Perhaps the following needs cleaning up.

 # Breadth-first search
 def bfs(e)                      # 'e' should be a block.
    q = []                       # Make an array.
    e.mark                       # 'mark' is a user-defined method. (??)
    yield e                      # Yield to the block.
    q.push e                     # Add the block to the array.
    while not q.empty?           # This could be made much more Ruby-like.
       u = q.shift
       u.edge_iterator do |v|
          if not v.marked?       # 'marked?' is a user-defined method.
             v.mark
             yield v
             q.push v
          end
       end
    end
 end
 bfs(e) {|v| puts v}
ایجاد حلقه بر روی آرایه‌ها و enumorationها با استفاده از بلوکها:
a = [1, 'hi', 3.14]
 a.each {|item| puts item}                         # Prints each element
 (3..6).each {|num| puts num}                      # Prints the numbers 3 through 6
 [1,3,5].inject(0) {|sum, element| sum + element}  # Prints 9 (you can pass both a parameter and a block)
بلوک‌ها با بسیاری از متدهای داخلی روبی کار می‌کنند:
File.open('file.txt', 'w+b') do |file|
    file.puts 'Wrote some text.'
 end                             # File is automatically closed here
یا:
File.readlines('file.txt').each do |line|
    # Process each line, here.
 end
استفاده از یک enumoration و یک بلوک برای جذر گرفتن اعداد ۱ تا ۱۰:
(1..10).collect {|x| x*x}    => [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
مثال‌ها > کلاسها

کد زیر یک کلاس بنام Person را تعریف می‌کند.
class Person
   def initialize(name, age)
     @name, @age = name, age
   end

   def <=>(person)
     @age <=> person.age
   end

   def to_s
     "#{@name} (#{@age})"
   end

   attr_reader :name, :age
 end

 group = [ Person.new("John", 20),
           Person.new("Markus", 63),
           Person.new("Ash", 16)
         ]

 puts group.sort.reverse
کد بالا سه نام را بر حسب سن از زیاد به کم چاپ می‌کند:
Markus (63)
 John (20)
 Ash (16)
مثال‌ها > استثناها

یک استثنا (exception) توسط اعلان raise ایجاد می‌شود:
raise
یک پیام اختیاری می‌تواند به استثناء اضافه شود:
raise "This is a message"
شما همچنین می‌توانید تعیین کنید که چه نوعی از استثناء را می‌خواهید ایجاد کنید:
raise ArgumentError, "Illegal arguments!"
استثناها توسط rescue کنترل می‌شوند. این عنوان می‌تواند استثناهایی را که از StandardError مشتق می‌شوند بگیرد:
begin
   # Do something
 rescue
   # Handle exception
 end
توجه داشته باشید که تلاش برای گرفتن تمام استثناها توسط یک rescue یک اشتباه معمول است و برای گرفتن تمام استثناها باید به صورت زیر عمل کرد:
begin
    # Do something
  rescue Exception
    # Handle exception
  end
یا یک استثنای به‌خصوص:
begin
   # ...
 rescue RuntimeError
   # handling
 end
و نهایتاً امکان آن وجود دارد که تعیین کرد شی استثناء برای عنوان کنترل‌کننده مهیا شود:
begin
   # ...
 rescue RuntimeError => e
   # handling, possibly involving e
 end
همچنین آخرین استثناء در یک متغیر جهانی به صورت !$ ذخیره می‌شود.
پیاده‌سازی‌ها

روبی دو پیاده‌سازی اصلی دارید: مفسر رسمی روبی که بیشتر مورد استفاده قرار می‌گیرد، و JRuby که یک پیاده‌سازی براساس جاوا است.
پیاده‌سازی‌ها > سیستم‌عامل‌ها

روبی برای سیستم‌عامل‌های زیر ارائه می‌شود:
بیشتر انواع یونیکس
لینوکس
داس (رایانه)
ویندوز ۹۵/۹۸/اکس‌پی/ان‌تی/۲۰۰۰/ویستا/۷
مکینتاش OSX
بی اواس
آمیگا
مورف اواس
Acron RISC OS
اواس/۲
هجا
پیاده‌سازی‌های دیگر نیز ممکن است وجود داشته باشد.
پیاده‌سازی‌ها > اجازه‌نامه

مفسر روبی و کتابخانه‌های آن تحت مجوز دوگانه آزاد و باز متن GPL و اجازه‌نامه روبی منتشر شده‌است.
منابع و کتابخانه‌ها

آرشیو برنامه‌های روبی (RAA) و همچنین RubyForge منابعی برای انواع مختلف برنامه‌ها و کتابخانه‌های نوشته شده با روبی هستند که حاوی بیش از دو هزار آیتم هستند. با اینکه تعداد برنامه‌های موجود قابل قیاس با تعداد برنامه‌های موجود در پرل و پایتون نیست، ولی طیف وسیعی از ابزارهای مختلف برای توسعه سریع روبی موجود است.
RubyGems برنامه استاندارد مدیریت بسته‌ها برای کتابخانه‌های روبی است و بسیار شبیه به CPAN در پرل است، همچنین نحوه استفاده از آن بیشتر شبیه ابزار [apt-get] در لینوکس دبیان است.
همچنین، روبی انجمن‌های فعال و گسترده‌ای برای کمک به علاقه‌مندان به این زبان دارد. در ایران نیز انجمن IranOnRails فعال‌ترین انجمن فارسی‌زبان روبی و همچنین روبی آن ریلز است.
تصویر یوکیهیرو ماتسوموتو خالق زبان برنامه نویسی ruby
باشگاه فوتبال سپاهان در فصل ۹۴–۱۳۹۳

در این صفحه شما اطلاعات سپاهان اصفهان در فصل ۹۴–۱۳۹۳ فوتبال ایران را خواهید دید. سپاهان اصفهان در این فصل در لیگ برتر چهاردهم و جام حذفی شرکت کرد. و توانست مقام قهرمانی لیگ برتر را برای پنجمین بار از آن خود کند.
حواشی

سپاهان که بازی های لیگ ایران را با سه برد طوفانی آغاز کرده بود در هفته چهارم با نتیجه باورنکردنی ۳-۰ بازی را به به تیم نفت واگذار کرد تا وارد بحران شود. این تیم پس از کسب سه مساوی کم کم صدر جدول را از دست داد و به مکان چهارم جدول نزول کرد. دوشنبه ۱۷ شهریور ۱۳۹۳ کرانچار در محل تمرین سپاهان با بازیکنانش خداحافظی کرد و اعلام کرد که استعفا داده است. این حرکت تیم را وارد بحران دیگری کرد. پس از آن هییت مدیره تیم٬ حسین فرکی که در فصل قبل به همراه فولاد خوزستان قهرمان لیگ برتر شده بود با عقد قراردادی دو ساله به سمت مربیگری تیم انتخاب کرد.
 در نهایت سپاهان که فصل پر افت و خیزی را دنبال کرده بود توانست با ۶ برد پیاپی و با کمی چاشنی شانس و تساوی دو تیم تراکتورسازی و نفت با ۵۹ امتیاز برای پنجمین بار قهرمانی لیگ‌برتر را از آن خود کند.  محرم نویدکیا موفق شد با قهرمانی لیگ چهاردهم به همراه سپاهان به پنحمین قهرمانی دوران ورزشی خود در لیگ برتر برسد تا به همراه ۴ کاپ قهرمانی که در جام حذفی بالای سرخود برده است. تنها کاپیتانی باشد که ۹ بار جام قهرمانی را بالای سر خود برده است و و اینگونه عنوان امپراتور لیگ برتر را به خود اختصاص دهد و به بازیکنی بی همتا در این زمینه تبدیل شود.
مسابقات > بررسی مسابقات

| رقابت | اولین بازی | آخرین بازی | جایگاه نهایی | آمار> بازی | آمار> ب | آمار> ت | آمار> ش | آمار> گ‌ز | آمار> گ‌خ | آمار> ت‌گ | آمار> % برد |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| لیگ برتر | ۱۰ مرداد ۱۳۹۳ | ۲۵ اردیبهشت ۱۳۹۴ | قهرمان | ۳۰ | ۱۷ | ۸ | ۵ | ۴۶ | ۲۷ | ۱۹+ | ۰۵۷ |
| جام حذفی | ۲۴ مهر ۱۳۹۳ |  | یک شانزدهم | ۱ | ۰ | ۰ | ۱ | ۰ | ۱ | ۱− | ۰۰۰٫۰۰ |
| مجموع | مجموع | مجموع | مجموع | ۳۱ | ۱۷ | ۸ | ۶ | ۴۶ | ۲۸ | ۱۸+ | ۰۵۵ |
آخرین به‌روزرسانی در: ۹ نوامبر ۲۰۱۸ (۲۰۱۸-11-۰۹).

منبع: رقابت‌ها