Ruby ve Frameworklerinin Dünyası
Thursday, 23 Apr 2009
Bildiğimiz üzere, Ruby, nesne yönelimli bir programlama dili. 90lı yıllarda, Yukihiro Matsumoto tarafından yazılmaya başlanmış. Özellikle Japonyada (kökeni itibarıyla) oldukça popüler bir dil imiş. Ancak David H. Hansson’un, Ruby ile bir web yazılımı geliştirme frameworku olan Ruby on Rails’i yazması ve umumun kullanımına açmasıyla dünyada tanımaya başladı. Şimdilerde oldukça popüler olduğu söylenebilir. En büyük problemi ise, herhalde dili anlatan kaynakların yetersizliği. Dökümantasyon, ruby geliştirme sürecinde yüksek öncelikli değil.
Framework derken, Ruby ile yazılmış, internet yayıncılığına yönelik, dolayısıyla web tasarım ve programlama yapılırken ihtiyaç duyulan çeşitli özellikleri tabiri caizse bazı kütüphanelerle dile ekleyen yazılımlardan bahsediyoruz. Bu framework ile site hazırlamak derken de, bu kütüphaneleri kullanarak ruby ile program yazma işinden bahsetmiş oluyoruz.
Ruby ile web yazılımı geliştirme için birçok framework var ortalıkta dolaşan.
Önce sıkça adı geçen bir iki terimden bahsedelim:
MVC: MVC model-view-controller (data modeli – arayüz birimi – işemleri gerçekleştiren kodar) demek olup, sistem altyapısı ve arayüzü, birbirini etkilememeleri ve daha kolay yönetilebilmeleri için birbirinden ayırmayı tavsiye eden bir mimari. Genel olarak site tasarlanırken kullanılmasının verimliliği öngörülen ve her dil ile kullanabilecek bir mimari yönelim.
DRY: (Don’t Repeat Yourself – Kendini Tekrar Etme)
ORM: Object Relational Mapping (Nesne İlişkili Adresleme – Bu şimdi yaptığım bir çeviri, hatalı olması muhtemel). Veri tabanındaki verilerin nesne yönelimli programlama dillerinde kolayca işlenebilmeleri için arayüz sağlar. Örneğin karmaşık bir sistemde bir kullanıcının telefonunu güncellemek için karmaşık bir SQL sorgusu yazmak gerekirken, ORM de bu işlem, gerekli join işlemleri bu arayüz tarafından gerçekleştirilip, kullanici.telefon = 1234 şeklinde bir komutla gerçekleştirilebilir.
Template Engine: HTML kodlarının otomatik oluşturulması için kullanılan bileşen. Mesela normalde <div id="profile"> şeklinde bir html kodu yazacağımız yerde kullanabileceğimiz template enginelerden biri olan haml kullandığmızda #profile yazarız.
Yukarıda bu frameworklerin kütüphanelerden oluştuğunu söylemiştik. Birazdan bahsedeceğimiz çatılar, birçok ortak kütüphaneye sahip olabiliyor. Yani çeşitli parçalardan oluşan bir yapıları var.
Şimdi, Popüler bazı frameworkları yazmaya geçebiliriz.
Ruby on Rails
2004 te Basecamp’ın geliştirilmesi için yazılmış bir çatı. İlk ve en popüler Ruby frameworkü. MVC mimarisini kullanıyor ve DRY’yi ilke olarak benimsiyor.
(Bu arada, RoR’un sitesi olan rubyonrails.org, sahibibin dediğine göre, yenileme işlemi register tarafından yapılamadığından park edilmiş.)
Merb
Sitesi merbivore.com. RoR’dan farkı, az önce bahsettiğimiz parçalı yapıdan aynı işi gören parçalardan istediğini seçme özgürlüğü vermesidir. Mesela RoR’da ORM olarak sadece ActiveRecord kullanılması mümkünken, Merb ile ActiveRecord, Sequel veya DataMapper kullanılabilir.
RoR ve Merb güçlerini birleştirmeyi kararlaştırdılar ve 3. RoR sürümü Merb ile birleşmiş olarak çıkacak. Buna sevinenler de var, durumu eleştirenler de. Ancak, istenilen ORM veya Template Engine vs. nin kullanılabilmesi, RoR’u güçlendirecektir.
Ramaze
Ramaze Merb gibi, tercih edilen kütüphanenin seçilmesine olanak veren bir framework. Ek olarak istenilen Ruby’nin (MRI, Jruby) de seçilmesine olanak veriyor.
Bunlardan sonra, iki tane mini frameworkten bahsedelim. Yukarıda saydıklarımız, büyük projeler için uygun olup, nispeten fazla kaynak tüketirler. Aşağıda sayacaklarımız ise, daha küçük projeler için uygun olan ve daha az kaynak tüketen, daha hızlı geliştirilme imkanı olan ve api gibi işlerde kullanımı oldukça verimli olanlar.
Sinatra
Sinatra, mini frameworklerden biri ve şu sıralar -galiba- en popüleri. Oldukça basit bir yapısı var ve MVC mimarisini kullanmıyor. Hazırlanan siteler tek dosya ile oluşturuluyor, tabi birden fazla dosya ile oluşturulması da mümkün ama tercih edilen yöntem bu. ORM ve Template Engine kullanılabiliyor.
Camping
Camping, whytheluckystiff tarafından geliştirilmiş ve bir iki yıl önce geliştirilmesi durdurulmuş bir framework. Hedefi boyutunu 4kb den daha küçük tutup kolay kullanılabilecek mini bir framework olmak. Ancak aktif geliştirme süreci durduğundan bugün kullanılması biraz problemli. MVC mimairisini kullanıyor.
Tabii ki tüm frameworklar bunlar değil, bu açıdan Ruby dünyası oldukça zengin. Son olarak Sinatradan bahseden, ayrıca diğer bazı frameworklerin isimlerini görebileceğiniz bir slayt adresi vereyim. Buyrun