KaderTarlan

BlogCan

Ruby on Rails

Ruby nesne tabanlı bir programlama dili olup oldukça sade ve kısa bir sözdizimine sahiptir.
Karmaşık kodlar yerine gelişmiş uygulamaları kısa yoldan gerçekleştirebilmemizi sağlar.
Rails ise web üzerinde veritabanına dayanan çalışmaları gerçekletirmeye yarayan , Ruby programlama dili üzerinden çalışan bir web uygulama geliştirme aracıdır.

Web uygulamalarının yapılmasını kolaylaştırmak için tasarlanmıştır çok daha az kod ile istenileni gerçekleştirmeyi hedefler.
Rails, Dont Repeat Yourself (DRY ) yani kendini tekrar edip durma ve Convention Over Configuration yani rutin işlerin ruby on rails tarafından hal edildiği felsefeleri üzerine kuruludur.

Railsi kurmak için gemlerden faydalanırız. Gems, Ruby ile yazılmış bir paket yönetim sistemidir. Linux’da ki yum , apt tarzı bir işlem gibi düşünülebilir. İçinde bir çok paket barındırır.
Ruby kurmak için linuxta konsola
$sudo apt-get install ruby
yazarak kurabiliriz.
RubyGems kurmak için, önce download sayfasından indirin. Arşivi açın ve
ruby setup.rb
komutu ile çalıştırın.
Rails kurmak için
gem install rails
komutunu yazdıktan sonra
rails –version
komutu ile de version kontrolü yapabiliriz.

Rails temeli; Model(ActiveRecord) Views(ActionView)
Controller(ActionController) (MVC) üzerine kuruludur.

Model’ler

Rails yapısında modeller esas olarak veritabanı ile olan ilişkilerden sorumludur. Veri tabanınızdaki her tabloya karşılık uygulamanızda bir model olacaktır.
Örneğin comment modeli veritabanında comments tablosu ile ilşkilidir. Comment modeli bu tabloda Create, Read, Update ve Delete işlemlerini yapar.

View’ler

Görseller uygulamanızın kullanıcıya gözüken yüzüdür. Rails’de görseller, ruby kodlarıyla birleştirilmiş HTML dosyalarıdır.
View’ın, Model ile iletişimi Controller üzerinden olur.

Controller’lar

Kontrolörler, modeller ve görseller arasında birleştirici görevi yaparlar.
Rails’de kontrolörler, dış dünyadan kullanıcı aracılığıyla web den gelen
istekleri kabul edip işleyerek verileri kullanıcıya sunulması için view katmanına göndermekte.

Şimdi basit bir rails projesi yapalım,terminalden;

$ rails new project

yazarak ilk projemizi oluşturalım ve
$ cd project komutu ile projemizin içine girelim.

$ rails server
komutunu vererek varsayılan olarak bir web server başlatacaktır.

Uygulamamızı çalışır şekilde görmek için bir tarayıcı açıp ve http://localhost:3000 adresini girin. Rails’in default bilgilendirme ekranı görecekseniz.

$ cd project
komutu ile projemizin içine girdik projemiz içinde
$ ls
komutu verdiğimiz zaman proje içinde app, bin config,db, lib, log, public, test,tmp ve vendor dizinleri ile bir kaç dosya görüyoruz.
Şimdi bunların ne işe yaradıklarına bir bakalım..

app/ : Bu klasörde views, controllers ve models katmanları bulunur.

config/ : Bu klasörde uygulamamızın çalışma kuralları, yolları, veritabanı ve yapılandırma dosyaları bulunur.

config.ru : Rack temelli suncucular için uygulamayı başlatmak için konfigürasyonlar içerir.

db/ : Geçerli veritabanı şeması, ve veritabanı geçişleri için birleştirmeleri (Migration) içerir.

Gemfile : Bu dosya Rails uygulamamızın bağlantılı olduğu Gem’leri belirtir.

lib/ : Uygulamamız için modüller bulundurur.

log/ : Uygulamamızın log dosyaları.

public/ : Dışarıdan , oldukları sekilde ulaşılabilen dosyalar buradadır. Burada statik dosyalarımız bulunur, tüm resimleriniz, javascriptleriniz, stilleriniz ..

README : uygulama için kısa kullanım kılavuzudur. Uygulamamızın ne yaptığını, nasıl, vb ayarları için kullanıcılara söylemek istediklerimizi bu dosyaya yazarız.

test/ : Birim testleri , bağlayıcılar ve diğer test yardımcılarını içerir.

tmp/ : Geçici dosyaları barındırır.

vendor/ : Tüm 3. parti yazılımları buradadır. Tipik bir Rails uygulamasında, Gem dosyaları,pluginler ve projenizin içine gömecekseniz Rails kaynak kodu bulunur.

Gerekli Gemlerin Kurulması

Rails uygulamamızın kullandığı tüm gemleri vendor klasöründe işleyemek için Bundler gemi kullanır.
Bu uygulamamızı başlatmak ve hatasız olarak çalıştırmak için gereken bağımlılıkların olduğundan emin olmamızı kolaylaştırır.

$ bundle install
komutu ile bunu kurabiliriz.

Rails’de Veritabanı

Hemen hemen tüm Rails uygulaması veritabanı kullanır.
Kullanılacağımız veritabanı config/database.yml dosyasında yer alır.
Rails uygulaması oluşturduktan sonra bu dosyayı kontrol edersek SQLITE3 gibi bir veritabanından bahsedildiğini görürüz.

$ rake db:migrate

komutu ile db/ klasöründe veritabanlarınızı oluşturur.

Şimdi Rails üzerinde kısa bir çalışma yapalım..

Rails’in var olan “Welcome abroad” yazısı yerine hazırladığımız görselin çıkmasını isteyelim
Mesela bize “Hoşgeldin Rails!” desin bunun için :

$ rails generate controller welcome index

komutunu kullanırız.

Bu komutu açıklarsak Rails’in bize Hoşgeldin Rails! demesi için bize controller ve views katmanları lazım. Bu komutla birlikte Rails bunu sağlıyor.

app/ dizini içinde controllerda welcome_controller.rb adında bir dosya oluşturuyor ve içinde index metodu yer alıyor.
Aynı zamanda bu komut app/ dizini içinde views
klasöründe index.html.erb adında bir html dosyası oluşturuyor.

$ app/views/home/index.html.erb dosyasını açıp içine sadece

1
2
   <h1>Hoşgeldin Rails!</h1>
 

yazıp kayıt edip çıkalım.

Şimdi http://localhost:3000/ adresine girdik ve hiç bir değişiklik olmadığını gördük. Çünkü routes.rb dosyasında ana sayfamızın değiştiği haberini vermedik.
Bu dosyada uygulamamızın Rails’e gelen isteklerin nasıl yönlendireceğini anlatan DSL girdileri vardır.

$ config/routes.rb

dosyasını açalım , bu dosyada sadece yorumlar vardır, bu yorumlarda örnek yönlendirmeler yer alır.
root :to ile örnek yönlendirmenin önündeki yorum işaretini(#) kaldıralım ve şu hale getirelim:

1
2
3
4
5
6
7
Project::Application.routes.draw do
# get “welcome/index”
# The priority is based upon order of creation: first created -> highest priority
# See how all your routes lay out with “rake routes”
# You can have the root of your site routed with “root” 

root welcome#index’

dosyamızı kayıt edip çıkalım , daha sonra

$rails server
komutu ile Rails projemizi tekrar çalştıralım ve tarayıcımızdan http://localhost:3000/ adresi ile giriş yapalım.

Çıkan sonuç şekildeki gibi olur: