• yaklaşık 3 aylık yoğun ve hızlandırılmış öğrenme ve uygulama dönemi içinde, neredeyse 10 senedir php ile hemhal olup kazanamadığım web ile alakalı teknik uygulama becerilerini uygulama yeteneği kazanmamı sağlamış ve insanı web development alanında vizyon sahibi yapan framework. en avam ve basitleştirilmiş söylenişi ile tıpkı php, asp.net, jsp gibi, web sitesi geliştirmenizi sağlayan bir dil kütüphanesi diyebiliriz.

    bu entry'yi okuduğunuza göre muhtemelen ruby on rails lafzını bir yerlerden görüp duymuş, nedir ne değildir diye merak eden ve "acaba sözlük'te bununla alakalı ne yazmışlar" deyip bu başlığa göz atan bir web developersınızdır. eğer ki web developersanız fakat ruby on rails'ı ilk kez bu entry'de duyuyorsanız şöyle bir bilgi ilginizi hayli arttırabilir. twitter'ın alt yapısı ruby on rails'dir.

    müsaadenizle bu müthiş framework ile ilgili yorumlarımı sizinle paylaşmak isterim.

    öncelikle şunu söylemem gerekiyor ki, ror öğrenmek isteyenler veyahut ror'un tam olarak ne olduğunu anlamakla ilgilenenler aşağıda belirteceğim yeteneklere/bilgilere sahip olmalılar:

    1. okuduğunu iyi anlayabilecek ve soru sorup cevap alabilecek kadar ingilizce bilmek.
    2. oop'nin ne olduğunu bilmek.
    3. mvc'nin ne olduğunu bilmek.
    4. orm'nin ne olduğunu bilmek.

    yukarıda saydıklarımdan herhangi biri hakkında malumata/yeteneğe sahip değilseniz, öncelikle bu konular hakkında yüzeysel de olsa bilgi/yetenek sahibi olup, yazacaklarımı ondan sonra değerlendirmeye almanızı tavsiye ederim.

    ruby on rails nedir?
    -------------------------
    kısaca ror, ruby programlama dili ile yazılmış bir web frameworktür. hayli afilli bir kelime gibi duran framework aslında en basit anlamıyla, herhangi bir programlama dilinde geliştirme esnasında sıklıkla ihtiyaç duyulan fonksiyonların/metodların, belli bir pattern çerçevesinde bir araya getirildiği iş kolaylaştırıcı kodlar topluluğudur. gelişmiş bir kütüphane, plug-in'ler manzumesi, çoooook temel bir şablon diyebiliriz belki de. * *

    hemen somutlaştıralım.

    php:

    <?php echo "bu bir yazı"; ?>

    ruby on rails:

    <%= "bu bir yazı" %>

    php:

    <?php
    $counter = 5
    for i, $counter => i , i++
    echo "5 kere yaz";
    ?>

    ruby on rails:

    <% 5.times do %>
    5 kere yaz
    <% end %>

    ruby on rails'in diğerlerinden farkı nedir?
    ----------------------------------------------------
    bu soru, ror hakkında bilgi almak isteyen herkesin aklına gelir sanıyorum. benim de gelmişti. fakat bunun 'yanlış' bir soru olduğunu, 'ror'un ne olduğunu uygulamalı olarak öğrendikçe anladım. bu soruya illa ki bir cevap vermek gerekecekse yazının başında söylediğimi tekrar etmeliyim sanırım: ror'un size kazandırdığı en önemli şey bence web geliştirmenin her açıdan ideal yöntemleri noktasını yakalama * konusunda sizi teşvik etmesi ve vizyon kazandırması.

    nasıl mı oluyor bu? açıklayayım...

    bir defa ruby on rails öğrenmek istediğiniz zaman, onun öncesinde -ve o sırada- öğrenmeniz gereken birçok şey var. birincisi ingilizce! evet, evet... yanlış okumadınız. ruby on rails sizi ingilizce'nizi ilerletmeniz konusunda zorlar. birincisi, ruby programlama dilinin syntax'i bildiğiniz ingilizce gibidir. yukarıda verdiğim örneği hatırlayın.

    <% 5.times do %>
    5 kere yaz
    <% end %>

    "5 kere yap" diyerek oluşturduğunuz blok içinde loop yapıyorsunuz mesela... daha da enteresan bir örnek vereyim.

    <%= 15.minutes.ago %>

    sizce bu komut satırı ne yapar? :) "15 dakika önce"sinin tarih ve saat bilgisini verir... evet, işte ror bu kadar fonksiyonel ve eğlenceli!

    tabii bu söylediklerim sadece işin şov kısmı. dediğim gibi ingilizce bilmeniz zaten başlangıç için bile çok önemli. ruby on rails'in sizi öğrenmeye teşvik edeceği şeyler ingilizce ile sınırlı değil.

    - gerçek anlamda oop'nin web geliştirmede nasıl kullanıldığını öğrenirsiniz. (zira ruby programlama dilinde istisnasız her şey ama her şey birer object'tir.)

    - eğer daha önce kullanmadıysanız, mvc pattern'i ile geliştirme yapmayı öğrenirsiniz. "düzenli" çalışmak, aradıklarınızı bulmak ne kadar kolaymış görürsünüz ve şaşırırsınız...

    - git ile tanışırsınız. version yönetiminin bir yazılımcı için ne kadar faydalı ve önemli bir icat olduğunu görürsünüz. github'daki dünyanın en ayrıcalıklı yazılımcılarla aynı sanal ortamlara girer çıkarsınız.

    - ruby on rails tabanlı geliştirme yapmak için en ideal platform *nix tabanlı işletim sistemleri olduğundan *nix dünyası ile hemhal olursunuz.

    - orm kullanmanın ne kadar büyük bir rahatlık olduğunu görürsünüz. amele gibi satırlarca sql yazmak zorunda kaldığınız zamanları düşünür gülersiniz.

    - ona gülerken sonradan "sql mi??" diyerek artık nosql database'ler * ile çalıştığınızı hatırlar ve yeniden gülümsersiniz.

    - gem uzayına adım atar ve ruby on rails'in ne kadar sadık, çalışkan, üretken bir communitysi olduğunu görür ve imrenirsiniz. github'da birkaç tane türk'ün ror adına ne kadar önemli işler çıkardıklarını görürsünüz, göğsünüz kabarır...

    - testing kavramı ile tanışırsınız. unit testing, integration tests, test driven development gibi kavramlar 'akademik' zırvalar olmaktan çıkar sizin için. çünkü bütün community bu kavramları 'günlük' dil içinde devamlı kullanmaktadır. yazılımda en ideal noktaya gitmek için devamlı imrenecek şeyler bulursunuz.

    velhasılı...

    ruby on rails'in -benim açımdan düşünürsek- php ile arasındaki en büyük fark bence `ruby on rails'in alelade bir dil değil, bir yaşam/yazılım tarzını simgeleyen adeta bir amiral gemi olmasıdır.

    ruby on rails'in ne gibi teknik avantajları var?
    ------------------------------------------------------------
    şimdi şunu baştan söylemek lazım. "proje için en uygun olan dil, o proje için en iyi dildir". şahsen yazılım konusunda agnostik olunması gerektiğine inanıyorum. her projenin spesifik ihtiyaçları, gereklilikleri, kısıtlayıcılıkları olabilir. açıkçası ruby on rails öğrendim diye parasız kaldığımda joomla ile 15 dakikada site hazırlamayacak değilim :)

    benim kafamdaki ruby on rails en ideal olanı simgeliyor.

    bir defa ister ror öğrenin ister öğrenmeyin, mesela php yazıyorsanız ve hala codeigniter'ı bilmiyorsanız, cakephp'yi, yii'yi duymadıysanız, kohana'dan bîhaberseniz; önemli bir vizyon eksikliğiniz var demektir. "ben kodlarımı notepad'te yazıyorum hala be!" diyerek bunu bir "artistlik" vesilesi sayan loserlardan değilsinizdir umarım... hakikaten 2012 yılında olacak iş değil. (bkz: sublime text editor) (bkz: text mate)

    öncelikle framework'ler sizi kısıtlamadığı sürece candır. (asp.net hariç :) mvc design pattern candır. orm'ler candır. fragment caching olmazsa olmazdır.

    bunların bazılarını php ile de elde etmeniz mümkün. ama nasıl? ya yukarıda saydıgım framework'lerden bir framework beğeneceksiniz * ya da yemeyip içmeyip yıllarca oturup tek başınıza yazacaksınız hepsini...

    rivayet odur ki; üstad necip fazıl vapurla karşıya geçerken biri gelip "şeyhe tarikata ne gerek var? biz yolumuzu bulabilirdik" der. üstad cevabı yapıştırır: "ne diye vapura bindin ki? yüzerek geçseydin ya karşıya?"

    benim görüşüm budur.

    işte ruby on rails web development alanında teorideki en ideal olan ne varsa, pratikte bünyesine toplamış bir güzellikler topluluğudur. convention over configuration düsturu ile oluşmuş ve her geçen gün daha da kökleşen bir gelenek anlayışı vardır. community'sindeki herkes bu geleneklere sıkı sıkıya bağlanır ve anlaşması çok kolay olur.

    bence vakit kaybetmeden kolları sıvayın...

    not: sözlükte ruby'ci arkadaşlar varsa mesajlaşalım, kontak kuralım, birbirimizi sevelim sayalım :)
  • kurulumu zaman zaman osmanlı'dan da daha uzun sürebiliyor.
  • bu framework uzerine kurulmus olan twitter, bu platformu terkederek java'ya ve yine jvm uzerinde calisan scala'ya gecti.

    aklin yolu bir.
  • sol framede görüp, bir çeşit kokteyl sanıp tarifine bakmak için tıkladığım, velhasıl yazılım çıkan bir hede...ben c++ bile zor öğrendim yau germeyin beni...railgun vardır bi de...
  • şimdi, ben bu arkadaşı öğrenmeye michael hartl ağbinin webcast ve kitapları ile başladım. oldukça dolu anlatıyor ve test driven development, heroku ve github ile harmanlayarak konuyu öğretiyor (n'aber git?). webcastlarda bize adım adım bir twitter klonu yaptırtıyor hartl üstad, en başta ruby'in en çok tutulan, böyle yana döne şeyettirilen scaffolding mevzusu ile olaya giriyor ve ekliyor "eğer bu webcastlarda izleyeceğiniz tek bir video olacaksa ne olur bunu izlemeyin!" zira scaffolding bir halta yaramıyor. yani eğer derdiniz "beş dakkada blog yaptım ben ehe" ise süper showcasing de, öyle ben uygulama yapacağım diyorsanız o yol, yol değil.

    tutorial'a biraz daha değinmek gerekirse eğer, esas konu olarak addettiği kısma başladığında hartl abi en başta düz html sayfaları yarattırıyor, views/pages altında olanlardan başlıyor, onları refaktöre ettirerek rubyleştiriyor ve partiallar ile layoutlara sayfaları kısım kısım bölmeye başlıyoruz. en son sign up sayfasının kabasını yaptırdı bıraktırdı. 12 bölümlük tutorial'ın ancak yarısına gelebildim.

    şimdi, ruby on rails inanılmaz bir sistem. lakin bu arkadaşın bundle install ile şeyettirilen bir gem indirme safhası var ki insanı kanser eder. mesela rspec ile şirin şirin test driven development yapıyorsunuz diyelim, bir yerde sayfaları pathlayacaksınız, yani kıro gibi /pages/about yazmak yerine /about denildiğinde insan gibi routes.rb'den yönlendireceksiniz, şimdi eğer elinizdeki webrat'in versiyonu 0.2.8 değil de 0.2.9 ise (salladım bu arada) uygulamanız infilak ediyor, ederken de "öyle bir sayfa bulunamadı" diyor. lan?! google olmasa, zinhar bulunmaz o sebep.

    bir de ben bu yazılımı öğrenmeyi mbp'da yapıyorum. bir uygulama platformu bu kadar mı başka platformlarda sorunlu olur? hem windows, hem linux hem de macte rvm ile aynı ruby versiyonu ve aynı rails'i indiriyorum çeşit çeşit sorunla karşılaşıyorum. dolayısıyla başka bir sistemde ne olacağı nasıl develop edileceği bir muamma (niye ror'cuların çoğunun macci olduğunu da anlamış bulundum bu mini macera ile tabii).
  • birkac yil icinde super moda olacak, belki php'nin popularitesine eri$ecek programlama araci.
    (bkz: web programlama sonbahar ki$ kreasyonu)
  • yapılacak son şeyin development environment'ı olarak windows'u seçmek olacağı caanım framework.

    katiyyen windows üzerinde ruby on rails uygulaması yapmaya çalışmayınız. bir defa ruby on rails'in doğasına ters. birçok gem'in çalışması için gerekli birçok kütüphanenin windows desteği yoktur ayrıca.

    virtual box ya da vmware player gibi rahatlıkla windows üzerinde sanal linux makinası kurmanızı sağlayan programlar mevcut.
  • geliştiricisi olduğum bir ruby web framework'ü. php(laravel ve symfony dahil) , .net, spring vs hepsi ile çalışmış ve enterprise, kişisel uygulamalar geliştirmiş biri olmama rağmen hem gönlümün hem de beynimin yegane şampiyonudur. model, view, controller yapısı, active record orm si, business logic mantığınıza göre neredeyse herşeyi sizden önce düşünmüş yapısı, matematiksel bir dil olan ruby'nin gücü. kolay ama bir o kadar güçlü mimarisi, aradığınız hemen herşeyi bulabileceğiniz çok ve kaliteli gemleri ile muhtaşör bir framework. övmeye devam etsem iki sayfa eder. türkiye de kaliteli geliştiricisi azdır. github, gitlab, shopify gibi büyük ve kurumsal yazılım firmalarının main frameworkudur, ayrıca yurtdışında startupların can dostudur. hızlı, kaliteli ve güvenli ürün çıkarmakta üzerine yoktur, topluluğu da geniştir. teknik bilgi için müsait zamanda uzun bir entry girmeyi düşünüyorum bu başlık altında bakalım nasip.
  • node django rails üçlüsünü de irili ufaklı kullanmış biri olarak gönlümdeki sampiyondur.

    paket sayisi node'dan biraz daha azdir, djangodan cok daha fazladir ama paketlerin kalitesi cok daha yuksektir.

    her şey automagical çalışır (convention over configuration), o yüzden doğru düzgün rails bilmeden projeye dalmak digerlerine gore daha zordur.

    kodlamasi en zevklisidir, bunda ruby'nin de daha matematiksel bir dil olması da etkilidir.

    çok oturmuş bir alışkanlıklar bütünü vardir. postgres + redis + rails + react + devise + heroku basılır geçilir.

    gundemden düşmüştür cunku hype evresini gecmis ve boring evresine girmistir. java ve turevleri gibi enterprise mecburiyetiyle veya php gibi fractal of bad design ile degil, "olmus"lukla bu evreye ulaşmıştır.

    silikon vadisi startuplarinin hala bir numaralı tercihidir cunku hem guven vermesiyle hem de pratikligiyle tam bir startup isidir, is yapan insanlarin tercihidir.

    sevilir.
hesabın var mı? giriş yap