Zaman gelir yeni birşeyler ararsın boş vakitlerini geçirecek. Sanki çok boş vaktin varmış gibi. Bende yeni bitme bir kaç dile bakıyordum. Python ve Ruby arasında bir seçim yapmak ihtiyacı hissettim kendimde. Python güzel bir dil ama COBOL'dan miras aldığı space ve tab'lara göre kodun derlenmesi bana pek uymadı. Öte yandan Ruby hakkında Joel'in kitabındaki yazıyı okuyunca işte bu dedim.

Önce Ruby on Rails framework'ünden başladım. Şu sitedeki yazıları okudum. Dilin İngilizce yazım kurallarına ve noktalama işaretlerine göre geliştirilmiş olması kod yazarken ilham veren bir olay. Hemen Windows için Apache, MySql ve Ruby'nin beraber sunulduğu bir paketi şu adresten indirdim.

Matt Griffith'in blogunda da 5 dakikada nasıl Ruby on Rails olayına gireceğinizi gösteren bir video var. Aşağıda anlattıklarım bu video ile paralel gidiyor.

Tabii ki Ruby henüz ASP.NET veya PHP gibi gelişmiş özelliklere sahip değil ve ticari veya yoğun kulanılan uygulamalar yazacak kadar güvenilir değil. Ama her dil yeni başladığında öyle değil miydi?

Ruby on Rails framework'ünde test ve production veritabanları her seferinde yeniden yaratılıyor. Tabii sizin belirlediğiniz kurallar çerçevesinde. Tüm geliştirme scriptler ile yapılıyor. Geliştirme, Test ve Production aşamaları için birer veritabanı mevcut. Genelde Nhibernate veya CodeSmith ile N-Tier veritabanına dokunmadan bir DAL (Data Access Layer) oluşturur. Ruby on Rails ile bu durum tam tersi. Önce DAL oluşturuyorsunuz sonra bunu baz alarak Ruby size veritabanını oluşturuyor.

Adım adım bende neler yaptığımı anlatayım.

Öncelikle indirdiğim paketi bir dizine açtım.

Benim sistemimde IIS ve MYSQL zaten çalışıyordu. Önce o servisleri kapatmak gerekiyor. Gidipte Ruby'nin konfigürasyon dosyalarını kurcalamak için pek bir isteğim yok. InstantRails.exe isimli programı çalıştırınca aşağıdaki ekran geliyor. Görüldüğü gibi Apache ve MYSql yeşil ışık yakmış.

Bu aşamadan sonra iki adet Ruby DOS ekranı açıyoruz. Bu DOS ekranlarından istediğimiz işleri yapacağız.

Ekranlarından birinden <rails demo> yazarak bir uygulama oluşturuyoruz. Bu komut rails_app dizini altında "demo" isimli bir klasör yaratıp gerekli diğer script ve dizinleri oluşturacaktır. Aşağıda bu komutun yarattığı dizinleri görüyorsunuz. Bu yazacağımız uygulamanın temeli olacak nesne ve fonksiyonları otomatik olarak oluşturur.

Açık olan DOS ekranından "demo" dizinine geçerek <cd demo> şu komutu verin:

ruby script/generate controller Blog

Bu komut Blog isminde bir controller sınıfı oluşturmak içindir.

Birde bir model oluşturmamız gerekiyor. Model veritabanı üzerindeki nesneleri temsil ediyor. Aşağıdaki komut ile modeli oluşturabilirsiniz.

ruby script/generate model Post

Şu aşamada hemen hemen her şey hazır. Bir kaç değişiklik yapıp veritabanını oluşturmamız gerekiyor. Veritabanını bizim oluşturacağımız DAL sınıfı ile oluşturacağı için öncelikle bunun kodunu yazmamız lazım.

C:\InstantRails\rails_apps\demo\db\migrate dizinine gidip (kurduğunuz dizine göre farklı yerde olabilir) 001_create_posts.rb dosyasını Notepad++ ile açın ve aşağıdaki şekilde değiştirin:

class CreatePosts < ActiveRecord::Migration
  def self.up
    create_table :posts do |t|
      t.column :title, :string
      t.column :body, :text
    end
  end

  def self.down
    drop_table :posts
  end
end

Burada veritabanı oluşturulurken posts tablosunda iki adet saha olacağını belirtiyoruz (title ve body). Şimdi veritabanına nasıl erişeceğimizi soruyor olabilirsiniz. Henüz bunun için hiç bir şey yapmadık. Fakat Demo uygulaması oluşturulurken bu tür alt yapıların çoğu oluşturulmuş durumda geliyor.

Eğer C:\InstantRails\rails_apps\demo\config dizinine bakarsanız database.yml isimli bir dosyanın olduğunu göreceksiniz. Bu dosyada 3 tip veritabanı tanımlanmış bunlar development, test ve production veritabanları. Bu dosyaya göre demo_development isimli bir veritabanı bulunması gerekiyor. Bu isimde bir veritabanını MySql üzerinde oluşturun. Herhangi bir tablo oluşturmanıza gerek yok. Aşağıdaki yoldan PHPMyAdmin ekranını açarak demo_development isimli bir veritabanı oluşturun.

Apache'yi kapatmak içinde bu ekranı kullanacağız.

Create tuşuna tıklayıp veritabanını oluşturun. İşiniz bitince Internet Explorer'ı kapatabilirsiniz. Yukarıdaki ekrandan Apache'yi de kapatın.

Bu işlemlerden sonra artık Ruby'nin kendi web sunucusu WEBrick'i çalıştırabiliriz. Açık DOS ekranlarından birinden <demo> dizinine geçin ve aşağıdaki komut ile WEBrick'i çalıştırın.

ruby script/server

Görüldüğü gibi WEBRick port 3000'den çalışıyor. Bunu bu şekilde çalışır bırakın. Artık Controller nesnemizi düzenleyebiliriz. Bunun için C:\InstantRails\rails_apps\demo\app\controllers dizinindeki blog_controller.rb dosyasını gene Notepad++ ile açın ve aşağıdaki şekilde değiştirin.

class BlogController < ApplicationController
	scaffold :post
end

Artık veritabanını migrate edebiliriz. Bunun içinde aşağıdaki komutu kullanacağız. Gene demo dizinindeyken:

rake db:migrate

komutunu verin.

Artık http://localhost:3000/blog adresine giderek uygulamanızı test edebilirsiniz. Hakikaten dedikleri kadar (web development that doesn't hurt) varmış.

New Post linkine tıkladığınızda aşağıdaki gibi yeni bir entry girebileceğiniz ekran gelecektir:

Bir şeyler yazıp Create tuşuna basın.

Linklerle oynayıp neler yaptığına bakın.

Ruby on Rails MVC (model, view, controller) metoduna göre hazırlanmış bir framework. Böylece verinin sunumu, saklanması ve üzerinde çalışılması gibi işlemler izole edilmiş durumda. 3 katmanlı bu metodun pek çok yararları var. örütbağında MVC olarak arattığınızda karşınıza pek çok link çıkacaktır. Genel olarak açıklamak gerekirse:

Model: Bir uygulamada var olan veri tiplerini ve sınıflarını belirlemeye yarar. Örneğin bir üniversiteyi model olarak ele aldığımızda burada öğrenci, öğretmen, ders, sınıf vb gibi veri tiplerinin bulunduğunu görüyoruz. Bunlar veritabanımızın tablolarını oluşturacaktır.

Controller: Veritabanından veri okumaya ve bu veriyi düzenlemeye yarayan bir dizi fonksiyondan ibaretir. Controller nesneleri VIEW nesnelerinin istediği veriyi sunmak ile yükümlüdür.

View: Verinin belli bir formatta sunulmasıdır.

Biraz daha kurcaladıktan sonra daha ayrıntılı yazacağım. Bu arada Rails ile yazılmış uygulamaları yayınlamak için hosting firmalarıda var. http://www.textdrive.com/ adresinden bakabilirsiniz. Fiyatlar şu aşamada ASP.NET'ten bile daha pahallı ama zaman içinde sanırım ucuzlar.


Reklamlar


Bu girdiye atılan yorumlar:

# re: Ruby on Rails

Çok yararlı bi yazı olmuş emeğine sağlık .Devamı gelir umarım .

erkan tarafından  10/18/2006 6:54 AM tarihinde atılmıştır.
# re: Ruby on Rails

bence tutorial olmamış , model den once controller oluşturmak mvc konseptiyle uyuşmuyor ayrıca arayuz için kullandığınız scaffold methodundan bahsetmemişsiniz o yuzden yeni başlayanlar için pek sağlıklı başlangıç noktası değil.

murat tarafından  8/22/2008 2:25 AM tarihinde atılmıştır.
# re: Ruby on Rails

Murat, İstediğin değişiklikleri yapmaya hazırım fakat yazacak vaktim yok. Eğer ayrıntılı bir şeyler yazarsan burada isminle yayınlarım, olur mu?

Gürkan Yeniçeri tarafından  9/26/2008 6:55 AM tarihinde atılmıştır.

Yorumunuzu buradan giriniz

Yorumlar onaylandıktan sonra yayınlanacaktır

*


*


 (Görüntülenmeyecek)


 (İsminizde link olarak görüntülenecek)

*
Bold Italic Underline Blockquote Hyperlink Hyperlink

 

Please add 7 and 3 and type the answer here:

Yorum Önizleme:

 

Arama



Hakkımda

Merhaba, ben Gürkan Yeniçeri. 9 yılı aşkın süredir özel sektör ve hükümet iştiraklerinde yazılım mühendisliği yapıyorum. Bu sitede 2005 Mart ayından beri genelde yazılım mühendisliği ve Microsoft teknolojileri hakkında yazmaktayım. Profesyonel iş geçmişim hakkında daha fazla bilgiyi aşağıdaki Çember.net linkinden alabilirsiniz.
Çember.net
Faturaları ödeyen günlük işim dışında Açık Kaynak Subtext Projesine katkıda bulunuyorum. Bu blogun alt yapısıda Subtext ile hazırlanmıştır. Ayrıca 1999 yılından beri Programlama.com sitesinde VB6 editörlüğü yapıyorum. Fakat takdir edersinizki VB6 artık ölü bir dil, bu nedenle beta sürümlerinden beri C# ve ASP.NET programcılığı ile uğraşıyorum.

kontak

Soru sormak veya öneride bulunmak isterseniz buradaki kontak formunu kullanın. Mesajlarınıza en kısa zaman içinde cevap vermeye çalışacağım. Ayrıca Windows Live Messenger kullanarak gyeniceri {AT} hotmail {DOT} com adresinden bana ulaşabilirsiniz.
Eğer İngilizce blogumu okumak isterseniz buraya buyrun.
Blogumu RSS Bandit gibi bir RSS okuyucusu ile de takip etmek için kullanın.
RSS 2.0

Reklamlar


imleme

Yumilerime ekle   Reddit Türkçe'ye ekle   Limkle   Bag-kur

Vezir

Vezir Proje Danışmanı
Sitede birde Vezir isminde wikimiz var. Bu wikiyi yazmayı düşündüğüm bir kitap için oluşturmuştum daha sonra herkese açmaya karar verdim. Vezir yazılım firması kurmak isteyenlere tavsiyeler vermek için hazırlandı. Ayrıca UML ve Modül Tabanlı Geliştirme hakkında da bilgiler mevcut. Vakit buldukça yeni eklemeler yapıyorum. Değişikliklerden haberdar olmak için RSS çıktısına üye olabilirsiniz.
www.flickr.com
This is a Flickr badge showing public photos from gurkanyeniceri. Make your own badge here.
Bu blogda 250 yazı ve 336 yorum var. Diğer sitelerden 7 adet link gelmiş.

Buradayım

my blogmap

Reklamlar