Ruby On Rails ile Web Development
Ruby On Rails, Ruby dilinin pratik ve güçlü yapısından faydalanarak development yapabileceğimiz bir platformdur. Avantajları saymakla bitmez. Hızlı development konusunda üstüne yoktur. Çünkü her iş için bir plugin bulursunuz. Ayrıca javayı embed edebilir, Ruby dilinin getirdiği bütün güzelliklerden faydalanabilirsiniz. Dizi tanımlarken değişken tipleriyle uğraşmazsınız, hiç ajax bilmeden ajax kullanabilir, javascript, css dosyalarınızı ruby’nin gücüyle hazırlayabilirsiniz. Ayrıca veritabanı bağlantısı noktasında da ruby güçlü bir platform sunar.
Ruby’yi bu kadar övdükten sonra isterseniz hem kurulumu anlatayım, hem de basit bir uygulamayla ruby on rails’i tanıyalım. Windows üzerinde çalıştığımızı kabul ederek kurulumu anlatacağım. Linux’u anlatmama gerek yok çünkü zaten paket yöneticileri sağolsun tek tıkla kurabiliyorsunuz..
Öncelikle bu siteden windows Installer ve RubyGems indiriyoruz. Windows installer ile kurulum yaptıktan sonra RubyGems dosyasını bir yere çıkarıyoruz. setup.rb dosyasını çalıştırdığımızda gem de kurulmuş oluyor. GEM, bir çeşit APT-GET gibi YUM gibi paket yöneticisidir. Daha sonra konsolda ‘gem install rails’ diyoruz..
Rails kurulumu bittikten sonra sıra web uygulamamıza geldi. Konsoldan uygulamamızı kuracağımız directory altına geliyoruz.
rails UygulamaAdi
komutunu verdiğimizde UygulamaAdi klasörüne web uygulamamız oluşturuluyor. Uygulamamız veritabanından aldığı verileri listeleyen bir uygulama olsun.
Ruby On Rails kısaca ROR, 3 farklı veritabanı üzerinde çalışma imkanı sunar. Birincisi development, ikincisi test, üçüncüsü production..
/config/database.yml dosyasını notepad ya da wordpad ile açıyoruz. Veritabanı olarak MYSQL kullanıyoruz. Dosyayı şu şekilde değiştirmeliyiz:
development:
adapter: mysql
encoding: utf8
reconnect: false
database: development_veritabani
pool: 5
username: root
password: rootşifreniz
host: localhost
Aynı şekilde Production ve Test veritabanlarını da değiştirmeliyiz. database.yml dosyasındaki ayarlara göre veritabanımızı oluşturmak için vermemiz gereken komut oldukça basit:
rake db:create
rake rails kurulumu sırasında gelir ve veritabanı işlemlerimizi yapar. İleride diğer rake argümanlarını da göreceğiz.
Uygulamamız Student adında bir nesneyle ilişkili olsun. Bunun için Students adında bir tablo oluşturmamız gerekecek. Bunun için sql komutlarıyla falan uğraşmamız gerekmiyor. İşte bu işi nasıl yaparız sorusunun cevabı:
ruby script\generate scaffold Student name:string age:integer
Bu komuttan sonra students adında bir model oluşturulur.
‘/app/views/students’, ‘/app/controllers/students_controller.rb’, ‘/app/models/students.rb’ …
şimdi bu scaffold’a göre veritabanı tablomuzu oluşturmalıyız. Windows’ta aşağıdaki kodu çalıştırırken hata alıyorsanız BU DLL DOSYASINI C:\Ruby\bin\ klasörü içine atınız:
rake db:migrate
Rake, burada bizim için Students tablosunu oluşturur. Şimdi sıra /config/routes.rb dosyasını değiştirmeye geldi. routes.rb dosyasını wordpad ile açıyoruz. # map.root :controller => “welcome” için arama yapıyoruz. Bu satırı map.root :controller => “students” olarak değiştirmeliyiz. Ayrıca /public/index.html dosyasını da silmeliyiz.
Bu aşamada artık sitemiz hazır. İsterseniz
ruby script\server diyerek sitenize erişebilirsiniz. Default adres http://localhost:3000/ olarak belirlenmiştir.
“routes. rb” dosyasında map.root :controller => “students” diyerek belirttiğimiz şey sitenin anasayfasının students controller’ı olduğudur. /app/views/students klasöründe ‘index.html.erb’ sayfası artık bizim anasayfamız oldu..
Şu an veritabanından okuyan, veritabanına ekleme yapabilen, güncelleme yapabilen ve veri silebilen bir uygulamamız oldu. İsterseniz gelin bir de zorunlu alanların boş bırakılamaması uyarısı verelim.
Yapacağımız şey oldukça basit:
/app/models/student.rb içerisine
validates_presence_of :name, :age
eklemek..
Şimdi bir veri eklemek istediğinizde name ya da age için hiç bir şey yazmazsanız zorunlu alanlar boş bırakılamaz uyarısı alırsınız…
Diyelim ki çok fazla sayıda veriniz var ve siz bunları sayfa sayfa görüntülemek istiyorsunuz. Bunun için de kod yazmanıza hiç gerek yok. Tek yapmanız gereken ‘will_paginate’ pluginini sitenize eklemek..
/config/environment.rb dosyasında
Rails::Initializer.run do |config|
kod bloğu içine
config.gem 'will_paginate', :version => '~> 2.3.11', :source => 'http://gemcutter.org'
satırını ekleyin. Daha sonra
rake gems:install
komutunu verin. Şu anda sitemizde will_paginate plugini kullanıma hazır. Bunu istediğimiz controller için kullanabiliriz. Students için kullanacağımızdan
/app/controllers/students_controller.rb dosyasını açıyoruz
def index
@students = Student.all
respond_to do |format|
format.html # index.html.erb
format.xml { render
ml => @students }
end
end
şeklindeki kod bloğunda @students = Student.all satırını @students = Student.paginate(:per_page => 10, :page => params[:page]) şeklinde değiştirin. Kaydedip kapatın.
Daha sonra
/app/views/students/index.html.erb
dosyasını açın.
Sayfalama işleminin görünmesini istediğiniz yere
<%= will_paginate @students %>
kodunu ekleyin. Böylelikle artık her sayfada 10 entry olmak üzere verileriniz listelenecektir.
Diyelim ki bu sayfanın herkes tarafından görüntülenmesini istemiyorsunuz. Basic Http Authentication işleminin ne kadar kolay olduğunu görme zamanınız geldi demektir..
/app/controllers/students_controller.rb dosyasında
class StudentsController < ApplicationController
# GET /students
# GET /students.xml
satırlarını görürsünüz..
class StudentsController < ApplicationController
before_filter :authenticate
# GET /students
# GET /students.xml
şeklinde değiştirin. En sondaki endden önce de şu kodu ekleyin:
protected
def authenticate
authenticate_or_request_with_http_basic do |username, password|
username == "hamit" && password == "1234"
end
end
Artık kullanıcı adı olarak hamit şifre olarak 1234 girmedikçe kimse sitenize erişemeyecek..
Bir başka tutorialde görüşmek üzere..
About this entry
You’re currently reading “Ruby On Rails ile Web Development,” an entry on Hamit'in yeri
- Yayımlandı:
- Kasım 2, 2009 / 5:45 pm
- Kategori
- Ruby On Rails
- Etiketler:
- ruby, Ruby On Rails
3 Yorum
Jump to comment form | comment rss [?] | trackback uri [?]