Ruby öğrenmeye başlamanın en verimli yolu, dilin temel yapı taşlarını sırayla oturtmaktır: önce değişkenler, veri tipleri, operatörler, koşullar ve döngüler; ardından metotlar ve bloklar, sınıflar ve modüller, koleksiyonlar, hata yönetimi ve son olarak Ruby 4.0 ile gelen yenilikler ve standart kütüphane. Bu rehber, serideki 35 yazının tamamını altı aşamalı bir öğrenme yolu halinde sıralar ve her birinin neyi anlattığını kısaca özetler.
Ruby'nin ne olduğunu, nerelerde kullanıldığını ve Rails gibi araçlarla ilişkisini Ruby nedir yazısında anlattık; burada o konuları tekrar etmiyoruz. Bu sayfa bir yol haritasıdır: kodu nasıl çalıştıracağınızı, hangi konuyu hangi sırayla çalışacağınızı ve resmî belgeleri nasıl okuyacağınızı gösterir. Serideki tüm örnekler Ruby 4.0.9 ile çalıştırılarak denendi.
Kurulumu doğrulamak: ruby -v

Ruby'yi kurduktan sonra ilk iş, terminalde sürümü kontrol etmektir. -v seçeneği yorumlayıcının sürümünü yazdırır. Çıktıdaki son köşeli parantez, Ruby'nin hangi platform için derlendiğini gösterir; aşağıdaki örnek Windows üzerinde alınmıştır. Komut satırı seçeneklerinin tamamı resmî belgelerdeki Command-Line Options sayfasında listelenir.
ruby -v
# ruby 4.0.9 (2026-10-23 revision 3e93b23afc) +PRISM [x64-mingw-ucrt]İlk Ruby programı
Ruby programları düz metin dosyalarıdır ve genellikle .rb uzantısıyla kaydedilir. Aşağıdaki kodu merhaba.rb adıyla UTF-8 olarak kaydedin. Kod bir değişken tanımlar, metin içine değer yerleştirir, bir dizi üzerinde dolaşır ve sonucu ekrana yazar. Satır sonlarındaki # çıktı: yorumları, o satırın ekrana yazdığını gösterir.
# merhaba.rb
isim = "Dünya"
puts "Merhaba, #{isim}!" # çıktı: Merhaba, Dünya!
diller = ["Ruby", "Python", "Go"]
diller.each_with_index do |dil, i|
puts "#{i + 1}. #{dil}"
end
# Çıktı:
# 1. Ruby
# 2. Python
# 3. Go
p diller.map(&:upcase) # çıktı: ["RUBY", "PYTHON", "GO"]
p diller.length # çıktı: 3Bu küçük programda Ruby'nin birkaç temel özelliği görünüyor: değişken tanımlamak için anahtar kelime gerekmez, çift tırnaklı metinlerde #{...} ile değer yerleştirilir, do ... end arasında bir blok yazılır ve puts ile p farklı biçimde yazdırır. puts değeri okunabilir metin olarak basar; p ise değerin inspect gösterimini basar, bu yüzden metinler tırnaklı görünür. Hata ayıklarken p daha çok bilgi verir.
.rb dosyasını çalıştırmak

Dosyayı kaydettiğiniz klasörde terminali açıp dosya adını ruby komutuna vermeniz yeterlidir. Kodu çalıştırmadan yalnızca sözdizimini denetlemek için -c, tek satırlık bir deneme için -e seçeneği kullanılır. Windows'ta Türkçe karakter içeren kodu -e ile vermek yerine dosyaya yazmanız kodlama sorunlarını önler.
ruby merhaba.rb
ruby -c merhaba.rb
# Syntax OK
ruby -e "puts 2 ** 10"
# 1024irb ile etkileşimli deneme
irb (Interactive Ruby), yazdığınız her ifadeyi hemen çalıştırıp sonucunu gösteren etkileşimli bir ortamdır. Terminalde irb yazarak açılır, exit ile kapanır. Her satırın sonunda => işaretinden sonra ifadenin döndürdüğü değer görünür. Ruby 4.0 NEWS dosyasına göre irb artık bir bundled gem olarak dağıtılıyor ve Ruby 4.0 ile irb 1.16.0 geliyor; standart kurulumlarda komut yine hazır gelir.
irb
irb(main):001> 1 + 2
=> 3
irb(main):002> "ruby".upcase
=> "RUBY"
irb(main):003> exitBir metodun ne döndürdüğünü, bir ifadenin hangi sınıftan nesne ürettiğini veya küçük bir kod parçasının nasıl davrandığını görmek için irb en hızlı yoldur. Uzun kodları ise dosyaya yazıp ruby ile çalıştırmak daha düzenlidir.
Ruby'de her şey nesnedir ve her ifade değer döndürür
Ruby'yi öğrenirken iki fikir sürekli karşınıza çıkar. Birincisi, sayılar ve nil dahil her değer bir nesnedir ve bir sınıfa aittir; operatörlerin çoğu da aslında metottur. İkincisi, if, case ve döngüler gibi kontrol yapıları da birer ifadedir ve bir değer döndürür. Resmî Control Expressions belgesi bu ikinci noktayı açıkça vurgular.
p 42.class # çıktı: Integer
p "metin".class # çıktı: String
p nil.class # çıktı: NilClass
p 1.+(2) # çıktı: 3
sicaklik = 31
durum = if sicaklik > 25 then "sıcak" else "serin" end
p durum # çıktı: "sıcak"1.+(2) yazımı, 1 + 2 ifadesinin aslında Integer sınıfının + metodunu çağırdığını gösterir. Bu bakış açısı, ileride kendi sınıflarınıza operatör tanımlarken işinize yarayacak.
Öğrenme yolu: 6 aşama, 35 yazı

Aşağıdaki sıra, her konunun bir öncekinin üzerine kurulacağı biçimde düzenlendi. İlk iki aşamayı sırayla çalışmanızı, sonraki aşamalarda ise ihtiyacınıza göre ilerlemenizi öneririz. Her yazıda kendi örneklerinizi çalıştırın ve küçük değişikliklerle sonucu gözleyin.
1. Temeller
- Değişkenler ve sabitler: yerel, örnek (
@), sınıf (@@) ve global ($) değişkenler ile sabitlerin adlandırma ve kapsam kuralları. Çoklu atama ve||=gibi kısa atama biçimleri de burada. - Veri tipleri ve literaller: sayılar, metinler, semboller, diziler, hash'ler, aralıklar ve düzenli ifadeleri doğrudan kodda yazmanın yolları. Heredoc ve
%wgibi yüzde literalleri de anlatılıyor. - Operatörler ve öncelik: aritmetik, karşılaştırma ve mantıksal operatörler,
andile&&farkı,&.güvenli gezinme operatörü ve öncelik tablosu. - if, unless ve case ile koşullar: koşul ifadeleri, tek satırlık modifier biçimler, üçlü operatör ve
case/when. Ruby'de yalnızcanilvefalsedeğerlerinin yanlış sayıldığı kuralı. - Döngüler: while, until ve each:
while,until,for,loop,timesveeachile tekrar;break,nextveredoile akış kontrolü.
2. Metotlar ve bloklar
- Metot tanımlama:
defile metot yazmak, varsayılan değerli parametreler, dönüş değeri ve tek satırlık metot tanımı. - Anahtar kelime argümanları: isimli parametreler, zorunlu ve isteğe bağlı anahtar kelimeler,
**ile esnek argüman toplama. - Blok ve yield: metotlara kod bloğu geçirmek,
yieldile bloğu çağırmak veblock_given?kontrolü. - Proc ve lambda farkı: blokları nesneye çevirmek,
returnve argüman sayısı konusunda iki yapının ayrıldığı noktalar. - it ve numaralı blok parametreleri: kısa bloklarda parametre adı yazmadan
itve_1kullanmak. - Enumerator ve lazy: blok verilmeden çağrılan yineleyicilerin döndürdüğü nesneler, harici yineleme ve tembel değerlendirme.
3. Sınıflar ve modüller
- Class ve nesneler: sınıf tanımlama,
initialize, erişim metotları ve kalıtım. - Module, include, extend ve prepend: modüllerle davranış paylaşmak ve metot arama sırasının nasıl değiştiği.
- public, private ve protected: metot görünürlüğü ve hangi durumda hangisinin seçileceği.
- Struct ve Data sınıfı: birkaç alanlı basit veri nesnelerini kısa yoldan tanımlamak; değiştirilebilir ve değiştirilemez seçenekler.
- Refinements: mevcut sınıflara yaptığınız eklemeleri yalnızca belirli bir kapsamda etkin kılmak.
- Comparable ve Enumerable: kendi sınıfınıza
<=>veyaeachyazarak onlarca hazır metodu kazanmak.
4. Koleksiyonlar ve metin
- Array metotları: dizilere eleman ekleme, çıkarma, arama, sıralama ve dilimleme.
- Hash metotları: anahtar-değer verisini okuma, güncelleme, varsayılan değerler ve dönüştürme.
- Enumerable: map, select, reduce: koleksiyonları dönüştürmek, süzmek ve tek değere indirgemek.
- String metotları: metin arama, bölme, değiştirme, biçimlendirme ve büyük/küçük harf işlemleri.
- Symbol ve String farkı: sembollerin ne olduğu, ne zaman metin yerine sembol kullanıldığı.
- Range (aralıklar):
..ve...ile aralık oluşturmak, sonsuz aralıklar vestep.
5. Hata, desen, kodlama ve sayılar
- begin, rescue, ensure ile hata yönetimi: istisnaları yakalamak, yeniden denemek ve her durumda çalışacak temizlik kodu yazmak.
- Pattern matching: case/in: dizi ve hash yapılarını desenlerle eşleştirip parçalara ayırmak.
- Regexp (düzenli ifadeler): metinde desen aramak, yakalama grupları ve
=~,match,scankullanımı. - Encoding, UTF-8 ve Türkçe karakter: metinlerin kodlaması, dönüştürme ve Türkçe harflerde büyük/küçük harf davranışı.
- Frozen string ve freeze: nesneleri dondurmak,
FrozenErrorve dondurulmuş metin literalleri. - Integer, Float ve Rational: tam sayılar, kayan noktalı sayıların sınırları ve kesin kesirli hesap.
6. Sürüm ve standart kütüphane
- Ruby 4.0 yenilikleri: NEWS dosyasına göre 4.0 sürümünde dilde, çekirdek sınıflarda ve standart kütüphanede neyin değiştiği.
- Dosya ve IO işlemleri: dosya okuma, yazma, satır satır işleme ve dosyaları güvenle kapatmak.
- JSON kullanımı: Ruby nesnelerini JSON metnine çevirmek ve JSON verisini ayrıştırmak.
- Ractor ile paralel çalışma: Ractor modeli, Ruby 4.0 ile gelen
Ractor::Portve paylaşılabilir nesneler. - Thread ve Fiber: eş zamanlı çalışma için thread kullanımı ve fiber ile iş birliğine dayalı akış.
- Set sınıfı: tekrarsız eleman koleksiyonu; Ruby 4.0 ile çekirdek sınıf haline gelen
Set.
Resmî belgeleri okumak
Bu serinin tek bilgi kaynağı, Ruby ekibinin yayımladığı Ruby 4.0 belgeleri sayfalarıdır. Belgeler üç bölüm halinde düşünülebilir: Integer, String, Array gibi çekirdek sınıfların sayfaları; dilin sözdizimini anlatan syntax sayfaları (Assignment, Literals, Control Expressions, Methods ve benzerleri); her sürümde neyin değiştiğini listeleyen NEWS dosyaları. Bir metodun sayfasında önce imza satırları yer alır: parametreler, blok alıp almadığı ve dönüş değerinin türü burada gösterilir. Örneğin Integer#times için iki imza vardır; blokla çağrıldığında sayının kendisini, bloksuz çağrıldığında bir Enumerator döndürür.
Belgelerdeki örnekleri kendi makinenizde çalıştırırken sürüm farkına dikkat edin. Bazı eski örneklerde hash'ler {:a=>1} biçiminde görünür; Ruby 3.4'ten bu yana inspect çıktısı {a: 1} biçimindedir. Hata mesajlarındaki tırnak işaretleri de 3.4 ile değişti. Bu seride gösterilen çıktılar Ruby 4.0'ın gerçek çıktılarıdır.
Öğrenirken sık yapılan hatalar
- Her şeyi Rails ile birlikte öğrenmeye çalışmak: Rails ve gem'ler dilin üzerine kurulmuş ayrı katmanlardır. Önce dilin kendisini, yani bu serideki konuları oturtmak, çerçeve kodunu okumayı kolaylaştırır.
- Yalnızca okuyup çalıştırmamak: Ruby'nin davranışlarının çoğu (örneğin
0değerinin doğru sayılması) denendiğinde akılda kalır. irb'yi açık tutun. putsileparasındaki farkı gözden kaçırmak:puts nilboş satır basar,p nilisenilyazar. Hata ararkenpkullanın.- Eski sürüm çıktılarıyla karşılaştırmak: İnternetteki örneklerin bir kısmı eski sürümlerin
inspectve hata mesajı biçimlerini gösterir. Sonucu kendi sürümünüzde doğrulayın. - Metot ile değişkeni karıştırmak: Ruby'de parantezsiz metot çağrısı ile yerel değişken aynı görünür. Bu konuyu değişkenler yazısında ayrıntılı ele alıyoruz.
Sık Sorulan Sorular
Ruby öğrenmek için hangi sürümü kullanmalıyım?
Bu seri Ruby 4.0'ın resmî belgelerine dayanır ve örnekler Ruby 4.0.9 ile denendi. Yeni başlıyorsanız güncel kararlı sürümü kurmanız, belgelerle çıktıların birebir eşleşmesini sağlar. Mevcut bir projede çalışıyorsanız projenin kullandığı sürümün belgelerine bakın.
irb ile .rb dosyası arasındaki fark nedir?
irb her satırı yazdığınız anda çalıştırır ve dönüş değerini gösterir; kısa denemeler için idealdir. .rb dosyası ise baştan sona çalıştırılan kalıcı bir programdır. Dosyada bir değerin görünmesi için onu puts veya p ile açıkça yazdırmanız gerekir.
Ruby'yi öğrenmeden Rails'e başlayabilir miyim?
Başlayabilirsiniz, ancak Rails kodu blokları, sembolleri, hash argümanlarını ve modülleri yoğun biçimde kullanır. Bu serinin ilk dört aşamasını bitirdiğinizde Rails kodundaki yapıların çoğunu tanıyor olursunuz. Rails'in kendisi bu serinin kapsamı dışındadır.
Konuları hangi sırayla okumalıyım?
İlk aşamadaki beş yazıyı sırayla okuyun; ardından metotlar ve bloklar aşamasına geçin, çünkü Ruby'deki koleksiyon metotlarının neredeyse tamamı blok alır. Sınıflar, koleksiyonlar ve hata yönetimi aşamalarını ihtiyacınıza göre okuyabilirsiniz. Sürüme özgü bilgiler için Ruby 4.0 yenilikleri yazısına bakın.
Marka adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen kuruluşlarla bayilik veya ortaklık ilişkisi bulunduğu anlamına gelmez.
İlgili içerikler: Ruby nedir · Ruby değişkenler ve sabitler · Ruby döngüler · Ruby 4.0 yenilikleri · Python nedir