Ruby è unico tra i linguaggi di scripting orientati agli oggetti. In un certo senso, è un linguaggio purista per chi ama i linguaggi orientati agli oggetti. Tutto, senza eccezioni, è automaticamente un oggetto, mentre in altri linguaggi di programmazione questo non è vero.
Cos'è un oggetto? Bene, in un certo senso puoi pensarci in termini di costruzione di un'auto. Se hai un progetto per esso, allora un oggetto è ciò che è costruito da quel progetto. Contiene tutti gli attributi che l'oggetto detiene (ovvero marca, modello, colore) e le azioni che può eseguire. Ma, anche come puro linguaggio orientato agli oggetti, Ruby non sacrifica alcuna usabilità o flessibilità tralasciando funzionalità che non sono espressamente correlate alla programmazione orientata agli oggetti.
L'architetto di Ruby Yukihiro Matsumoto (noto semplicemente come "Matz" sul web) ha progettato il linguaggio in modo che sia abbastanza semplice da usare per i programmatori principianti, ma anche abbastanza potente da consentire ai programmatori esperti di disporre di tutti gli strumenti di cui avrebbero bisogno. Sembra contraddittorio, ma questa dicotomia è dovuta al puro design orientato agli oggetti di Ruby e all'attenta selezione di funzionalità di Matz da altre lingue come Perl, Smalltalk e Lisp.
Esistono librerie per la creazione di tutti i tipi di applicazioni con Ruby: parser XML, collegamenti GUI, protocolli di rete, librerie di giochi e altro ancora. I programmatori Ruby hanno anche accesso al potente programma RubyGems. Paragonabile al CPAN di Perl, RubyGems semplifica l'importazione delle librerie di altri programmatori nei propri programmi.
Come ogni linguaggio di programmazione, Ruby ha i suoi lati negativi. Non è un linguaggio di programmazione ad alte prestazioni. A tale proposito, il design della macchina virtuale di Python ha un enorme vantaggio. Inoltre, se non sei un fan della metodologia orientata agli oggetti, Ruby non fa per te.
Sebbene Ruby abbia alcune funzionalità che esulano dal regno dei linguaggi orientati agli oggetti, non è possibile creare un programma Ruby non banale senza usare le funzionalità orientate agli oggetti. Ruby non esegue sempre così come altri linguaggi di scripting simili in attività di elaborazione non elaborate. Detto questo, le versioni future affronteranno questi problemi e implementazioni alternative, come JRuby, sono disponibili come soluzione alternativa per questi problemi.
Ruby viene utilizzato nelle tipiche applicazioni del linguaggio di scripting come l'elaborazione del testo e i programmi "colla" o middleware. È adatto per piccole attività di scripting ad-hoc che, in passato, potrebbero essere state risolte con Perl. Scrivere piccoli programmi con Ruby è facile come importare i moduli necessari e scrivere un tipo di programma di tipo "sequenza di eventi" quasi BASIC.
Come Perl, Ruby ha anche espressioni regolari di prima classe, che rendono gli script di elaborazione del testo un gioco da ragazzi. La sintassi flessibile aiuta anche in piccoli script. Con alcuni linguaggi orientati agli oggetti, puoi impantanarti con un codice dettagliato e voluminoso, ma Ruby ti lascia libero di preoccuparti semplicemente della tua sceneggiatura.
Ruby è adatto anche per sistemi software più grandi. La sua applicazione di maggior successo è nel framework web Ruby on Rails, un software che ha cinque sottosistemi principali, numerosi pezzi minori e una pletora di script di supporto, backend di database e librerie.
Per aiutare la creazione di sistemi più grandi, Ruby offre diversi livelli di compartimentazione, tra cui la classe e il modulo. La mancanza di funzionalità superflue consente ai programmatori di scrivere e utilizzare grandi sistemi software senza sorprese.