Mutlaka Duymuşsunuzdur Ruby de Ruby Rails da Rails nedir ne değildir. size bir site örneği ile anlatmak istedim arkadaşlar.Bu yazıyı okuyunca PHP ile onca kod yazıp yaptığınız işlemleri ROR ile ne kadar kısa zamanda yapabildiğinize şaşıracaksınız.DRY denen DONT REPEAT YOURSELF (kendini tekrar etme) mantığını kullanan, herşeyin bir obje olduğu bir programlama dilidir. Obje deyince gözünüz korkmasın ilerideki yazılarımda detayına ineriz.Ruby’i değerli kılan şey, basit ve öz olarak yazılır.Bir çok gereksiz parantez ve syntaxı kullanmaz basit ingilizce ile yazılır.Eğer iyi derecede herhangi bir programlama dili biliyorsanız. Ruby e atlamanız ve syntaxlarını öğrenmeniz 2-3 gününüzü alacaktır.Ayrıca bu Gem denen eklentileri ile sitenize gratar falan gibi avatar jquery vs pluginlerinide direk kurabilirsiniz. Elle uğraşmaya son.Rails ise ruby dilinin internet için olan MVC frameworküdür. RubyonRails diye anılır. neyse fazla uzattık geçelim diğer bölümlere.1.Aşama Ruby in kurulumu.Bu adresten Windows için Ruby Kurucu Rubyinstallerı indirebilirsiniz.normal bir program kuruyormuş gibi kuruyoruz kendisini C:ruby19 diye bir klasore atar.ardından sistem özelliklerinde ortam değişkenlerini açıyoruz Path kısmını buluyoruz ve resimdeki gibi ;c:Ruby19bin olarak ekliyoruz .(siz hangi klasore kurduysaniz SurucuADI:RUBYKLASORUbin şeklinde ayarlıyorsunuz).

ve command console u muza girinceruby yazarak test ediyoruz.eğer ‘ruby’ iç ya da dış komut, çalıştırılabilirprogram ya da toplu iş dosyası olarak tanınmıyor. hatası almadıysak kurulumumuz başarılı olmuş demektir . Ctrl C ile tekrar konsolumuza dönüyoruz2.Aşama Ruby Update Ve Rails kurulumukonsolumuzda ruby klasörünün altındaki bin e girip (ruby.exe nin oldugu yere)ruby gem update –system
komutunu giriyoruz ve tekrar konsol imleci donunceye kadar bekliyoruz ruby kendisini update ediyor ve gem lerini kuruyor.ve Asagidaki komut ile rails framework umuzu de kuruyoruzruby gem install rails
bu islemde bittigine gore. sira geldi mysql eklentimizi kurmaya. hali hazirda bir sql serveriniz makinanizda mevcut ise sadece eklentiyi kurmaniz yeterli. yoksa mysql sunucu kurmalisiniz.(IPUCU: wamp xamp gibi apache mysql php 3lusunu kurup icindeki mysql serveri kullanabilirsiniz.)asagidaki komut ile mysql gem imizi eklenti diyelim biz buna kurabilirsinizruby gem install mysql
ve kurulum bitti sira geldi. ilk sitemizi kodlamaya.3. Proje
projelerinizi nerede saklayacaksanız onun icin bir klasor olusturun. örnek olarak c:projelerimconsolumuz da proje klasörümüze gidiyoruz c:projelerim’in içindeyiz.ve site klasörü için ben dengin ismini seçtim konsola…rails dengin -d mysql yaziyoruz
yani dengin isimli bir proje olustur.-d mysql ile mysql kullansin şeklinde belirtiyoruz.ve otomatik olarak dengin klasoru geliyor. rubyonrails bize gerekli olan dosyalari kuruyor.

buraya kadar hersey tamam sıra geldi . MVC mantığını ve database imizi olusturmaya.bunun için rails in generate komutunu kullanacagiz. ama bundan önce. artık bir Rails IDE sine ihtiyacımız var.Ben NetBeans i öneririm. Çünkü Hem hızlı hemde beleş.IDE mizi kurduktan sonra… dengin/configuration klasörünün altındakidatabase.yml dosyasını IDE miz ile açıyoruz. vedevelopment:adapter: mysqlencoding: utf8reconnect: falsedatabase: dengin_developmentpool: 5username: rootcukpassword: 123456host: localhost kismindaki user pass host alanlarini database ismini kendimize gore ayarliyoruz.
Başka bir konsol açarak projeklasöru/projeismi (c:projelerimdengin)içine giriyoruz veruby script/server yazarak web serverımız baslatılmıs oluyor. http://localhost:3000 adresine girdiğimizde karşımıza aşağıdaki resim gelmiş olacak.

Serverımız çalışıyor. Şimdi modellerimizi, controller ve viewlerimizi kurmaya geldi. bunun için database yapımızı kafamızda oluşturmamız lazım.Benim bu projem Deniz Motorları satan bir firma ile ilgili.Websayfasında neler olacak.1. Hakkımızda – İletişim gibi Sayfalar (Controller:pages,Model:page,View:page)2. Kategoriler – (Controller: categories,Model:category,View:category3. Motorlar – (Controller: motors,Model:motor,View:motor)şimdilik bu kadar yeter ileride devamını ekleriz.şuan ne dizayn ne de başka birşey olmadığı için database yapımızı ve MVC elemanlarımızı ruby e otomatik kurduracağız.serverımız acık dura dursun. 2. konsolumuzda.projeklasörü/projeismi’nin altındaykenruby script/generate scaffold Category isim:string parent_id:integer about:string
şeklinde yazıyoruz ve ruby bize gerekli database şemasını /db/migrate/schemanumarası_create_categories.rb şeklinde yazar (id vs leri kendi otomatik yapar tablomuzu kurarken (Migrate kısmında gerekli bilgi)
vebutun gereklı MVC lerı olusturur aşağıda C ile ilgili dosyaları oluşturduğunu görüyoruz.create app/views/categories/index.html.erbcreate app/views/categories/show.html.erbcreate app/views/categories/new.html.erbcreate app/views/categories/edit.html.erbcreate app/views/layouts/categories.html.erbcreate public/stylesheets/scaffold.css
aynı işlemleri page,motor modelleri içinde yapacagiz.ruby script/generate scaffold Page isim:string content:text
ruby script/generate scaffold Motor title:string category_id:integer specs:text
Yukarıdaki kodlar bize . Page tablosu isim (varchar255) content (text)vemotor tablosu için title(varchar255) category_id(integer) specs:(text) olarak database imize kaydedecek. şuan için sadece şemamızıvescaffold denen database imizi doldurmamız ve ufak bir test yapabilmemize olanak sağlayan şablonumuzu oluşturduk.db/migrate altında 3 tane şema dosyamız var ve bunları mysql imize atmanın vakti geldi.4. Database Migrateevet console da proje sayfamız altındaiken.rake db:create//databaseimizi olusturduk database.yml altindaki isim ilerake db:migrate// şemalarımızı tablo haline getirdik. phpmyadmin ile tabloları görebilirsiniz.C:projelerimdengin>rake db:create(in C:/projelerim/dengin)C:projelerimdengin>rake db:migrate(in C:/projelerim/dengin)== CreateCategories: migrating ===============================================– create_table(:categories)-> 0.0300s== CreateCategories: migrated (0.0300s) ======================================== CreatePages: migrating ====================================================– create_table(:pages)-> 0.0400s== CreatePages: migrated (0.0400s) ============================================= CreateMotors: migrating ===================================================– create_table(:motors)-> 0.2600s== CreateMotors: migrated (0.2600s) ==========================================
http://localhost:3000/categories adresine girerek new category ile bazi kategoriler ekliyelim.benim kategorilerim1.Evinrude2.Johnson3.Tohatsuhttp://localhost:3000/categories/1 ile eklediğiniz kategori görebilirsiniz.şimdi sıra geldi motorlarımızı eklemeyehttp://localhost:3000/motors/ ta new motorTitle Category Specs9.9 HP Evinrude 1 9.9 bilgileri15 HP Evinrude 1 15hp Bilgileri25 HP Evinrude 1 25 HP bilgileri
fark ettiyseniz motorlari girerken category_id yazmadi onun yerine category yazdi yani ROR(RubyonRails) otomatik olarak bizim category modelimizi gordu ve bu buna bagli dedi. tabi bu bag suan icin cok basit biz onu gelistirecez daha neler neler yapacaz…buraya kadar herşey güzel hoşta. bomboş beyaz ekran şablon ile ne yapacağız değil mi?5. Layout ( yani dizayn falan filan)free bir css web template bulalım. ben mavili falan seçtim.controllers da application_controller.rb yi açıyoruz veActionController::RequestForgeryProtection for details in altina
layout ‘application’ kaydediiyoruz. view layoutsun altina application.erb diye bir dosya yaratiyoruz.
diger layoutlari siliyoruz.application.erb yi aciyoruz.dizaynimiz şu şekilde oluyor<%= stylesheet_link_tag 'style' %>//css dosyamizin ismi css dosyamizi// public/stylesheets in altina atmayi unutmayin.
<%=yield %>// views/modelismi/action.html.erb nin icerigi buraya geliyor


<%=yield %> database den cekilen bilgileri istenilen yere gostermek icin kullanılır yani motors/show/1 dediğiniz zaman id si 1 olan motorun bilgileri show.html.erb ye gider sonra bu .erb sizin body taglarınızın içinde yield neredeyse orada gösterilir. bu arada css dosyanızın içinde image leri göstermek için (images/a.jpg) ise (../images/a.jpg) olmalı ve dosyalarınız public/images in altında olmalıdır.1.bölümü burada bitirirken herkese iyi şanslar dilerim ruby zor mu kolay mı bilemem ama zaman kazandırdığı kesin… gelecek yazım modeller arası ilişkiler form validasyonu ve kullanıcı işlemleri olacak herkese tekrardan kolay gelsin yorumlarınızı eksik etmeyin.