Semantik Ruby

Ruby ialah berorientasi objek: setiap satu data merupakan objek, sampaikan kelas dan jenis yang ditakrifkan bahasa lain sebagai primitif (seperti integer, boole, dan "nil"). Setiap fungsi ialah kaedah. Pemboleh ubah sentiasa merujuk kepada objek, tetapi pemboleh ubah itu sendiri bukannya objek. Ruby menyokong pewarisan dengan hantaran dinamik (dynamic dispatch), campuran (mixin) dan kaedah unsur tunggal (singleton method). Walaupun Ruby tidak menyokong pewarisan berbilang (multiple inheritance), kelas (class) boleh mengimport modul sebagai campuran.

Ruby telah disifatkan sebagai sebuah bahasa pengaturcaraan berbilang paradigma: ia membenarkan pengaturcaraan bertatacara (mentakrifkan fungsi atau pembolehubah di luar kelas membuatkan mereka sebahagian daripada akar, objek 'self'), dengan perorientasian objek (semua benda ialah objek) atau pengaturcaraan kefungsian (ia mempunyai fungsi awanama, penutupan, dan pelanjaran (continuation); semua kenyataan ada nilainya, dan fungsi memulangkan penilaian yang terakhir). Ia menyokong kaji diri, pantulan dan metapengaturcaraan, di samping bebenang berasaskan pentafsir[1]. Ruby menampilkan penjenisan dinamik serta menyokong polimorfisme parameter.

Menurut FAQ Ruby,[2] "Jika anda sukakan Perl, anda akan sukakan Ruby dan rasa tidak asing dengan sintaksnya. Jika anda sukakan Smalltalk, anda akan tidak akan rasa janggal dengan semantiknya. Jika anda sukakan Python, anda mungkin atau mungkin tidak akan tidak selesa dengan perbezaan yang amat besar dari segi rekaan antara Python dan Ruby/Perl."