Ruby on Rails - Hello World!
18 Ocak 2006 tarihli, Ruby, Programlama köşesine ait yazı.
Rails kurulumunu tamamladıysanız ilk uygulamamız için hazırsınız demektir. Bu örnekte veritabanı kullanmayan basit bir “Hello World!” programı yazacağız. İlk olarak programımızı saklayacağımız klasörü seçelim, mesela c:\rails klasöründe tüm Rails programlarınızı saklayabilirsiniz. Tabii linux kullanıyorsanız /home/onur/rails gibi bir klasör olacaktır. Herneyse, konsolu açıp bu klasöre gelip aşağıdaki komutu çalıştırıyoruz:
rails komutu bizim yerimize aşağıdaki tüm klasörleri ve dosyaları otomatik yaratıyor. Linux kullanıcıları için önemli bir nokta: Ruby genellikle /usr/local/bin/ruby klasöründe yüklü olur ve rails programı ile yaratılan dosyalardan public/dispatch.cgi, public/dispatch.rb ve public/dispatch.fcgi dosyalarının ilk satırı şu şekildedir:
Eğer ruby yüklediğiniz klasör farklı ise dosyalarda direk bu klasörü belirtebilir, veya
yazarak ortam değişkenlerinden ruby klasörünün otomatik bulunmasını sağlayabilirsiniz. Windows kullanıcılarının da kontrol etmelerinde yarar var; eğer ruby binary dosyanız c:/ruby/bin/ruby değilse yine bu satırları değiştirmeniz gerekiyor.
Yaratılan klasörlerin ne olduğunu biraz incelemek gerekirse:
app: Yazacağımız ve düzenleyeceğimiz dosyaların çoğu bu klasörde olacaktır.
- controllers (denetleyiciler): Kullanıcıdan gelen istekleri cevaplayan nesnelerin bulunduğu klasördür.
- views (görünümler): Ruby uygulamamızdan gelen verileri bu klasördeki görünümler kullanılarak html olarak kullanıcıya aktarılır.
- models (modeller): Veritabanından gelen verileri işlemek için kullanılan tanımlar bu klasördedir. Bazen uygulamada aynı kodu tekrar etmemek için factoring out yapılarak işlem modelde belirtilir.
- helpers (yardımcılar): denetleyici, görünüm ve modellere yardımcı olarak kullanılırlar. Kodda karmaşayı hayli önler.
config: Ortam değişkenlerini ve veritabanı yapısını saklar.
log: Kayıt dosyaları.
public: Web sunucusunun gördüğü root klasördür.
Bu ve saymadığım klasörlerin farklı görevleri kesin vardır ama biz bu aşamada ekrana birşeyler yazdıralım yeter :)
Uygulamamızı sunucuda test edelim
Henüz hiçbir şey yazmadık ama bakalım boş hali nasıl görünüyor. Rails uygulamalarını test etmemiz için gelen WEBrick sunucusu emrimizde. Konsoldan proje klasörüne gelip (c:\rails\ilkprogram demiştik) şunu yazıyoruz:
5-6 satır birşeyler yazdıktan sonra WEBrick bize 3000. portta hazır olduğunu bildiriyor. Hemen bir Firefox açıp http://localhost:3000 yazıyoruz. Şu şekilde bir ekran açılması lazım:

Denetleyici-URL ilişkisi
Rails uygulaması yazmak için denetleyicilerle URL’ler arasındaki bağlantıyı iyi anlamak çok önemli. Zira URL’ler yardımıyla denetleyiciler ve onların metodları çalışır. Nasıl olduğunu görmek için konsola şu komutu giriyoruz:
Kullandığımız generator script bizim yerimize hello adında bir denetleyici oluşturuyor. Acaba şimdi sunucudan yeni denetleyicimiz için nasıl bir cevap geliyor? Öğrenmek için http://localhost:3000/Hello yazıyoruz.

Burada index için bir olay tanımlanmadığını bildiriyor. Çünkü localhost:3000/Hello adresinde kullanılacak denetleyicinin hello, çağırılacak metodun ise index olduğunu söylüyoruz. İstediğimiz çıktıyı almak için app\controllers klasöründeki hello_controller.rb denetleyicisini düzenliyoruz:
def index
render_text “Hello World!”
end
def acikbilgi
render_text “AcikBilgi.com ile Ruby on Rails!”
end
end
Şimdi şu adresleri kontrol edin:
Sanırım ana düşünceyi anladınız. /hello altklasörüyle veya hello/index diye çağırdığımızda hello denetleyicisinin index olayına, veya istediğimiz olayı tanımlayarak o olaya ulaşabiliyoruz.
Giriş sayfasını tanımlama
“Peki her zaman istediğimiz denetleyiciye alt klasör belirterek mi ulaşabiliriz?” veya “Giriş sayfasında sürekli Rails ve Getting Started mı gösterilecek?” Tabii ki değil, giriş sayfasını istediğimiz denetleyiciye yönlendirebiliriz. Yapmamız gereken şunlar:
public\index.htmldosyasını kaldırın.config\routes.rbdosyasını açın ve şu satırı bulun:# map.connect ”, :controller => “welcome”Satırın başındaki # simgesini (ki ruby’de comment’leri belirtir) kaldırın, hangi denetleyiciye yönlendirmek istediğinizi yazın. İsterseniz
actionparametresi ile olayı da seçebilirsiniz. Örnek:map.connect ”, :controller => “hello”, :action => “acikbilgi”
Şimdi http://localhost:3000 adresi sizi hello denetleyicisinin acikbilgi olayına yönlendirecektir. Giriş sayfanızı bu şekilde özelleştirebilirsiniz.

