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:\Ruby19\bin olarak ekliyoruz .(siz hangi klasore kurduysaniz SurucuADI:\RUBYKLASORU\bin şeklinde ayarlıyorsunuz).
ve command console u muza girince
ruby yazarak test ediyoruz.
eğer 'ruby' iç ya da dış komut, çalıştırılabilir
program 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üyoruz
2.Aşama Ruby Update Ve Rails kurulumu
konsolumuzda ruby klasörünün altındaki bin e girip (ruby.exe nin oldugu yere)
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 kuruyoruz
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 kurabilirsiniz
ve kurulum bitti sira geldi. ilk sitemizi kodlamaya.
3. Proje
projelerinizi nerede saklayacaksanız onun icin bir klasor olusturun. örnek olarak c:\projelerim
consolumuz da proje klasörümüze gidiyoruz c:\projelerim'in içindeyiz.
ve site klasörü için ben dengin ismini seçtim konsola...
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ındaki
database.yml dosyasını IDE miz ile açıyoruz. ve
|
|
| development:
| | adapter: mysql
| | encoding: utf8
| | reconnect: false
| | database: dengin_development
| | pool: 5
| | username: rootcuk
| | password: 123456
| | host: localhost |
|
kismindaki user pass host alanlarini database ismini kendimize gore ayarliyoruz.
Başka bir konsol açarak projeklasöru/projeismi (c:\projelerim\dengin\)içine giriyoruz ve
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:category
3. 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ındayken
|
|
| ruby 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)
ve
butun gereklı MVC lerı olusturur aşağıda C ile ilgili dosyaları oluşturduğunu görüyoruz.
create app/views/categories/index.html.erb
create app/views/categories/show.html.erb
create app/views/categories/new.html.erb
create app/views/categories/edit.html.erb
create app/views/layouts/categories.html.erb
create 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)
ve
motor tablosu için title(varchar255) category_id(integer) specs:(text) olarak database imize kaydedecek. şuan için sadece şemamızı
ve
scaffold 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 Migrate
evet console da proje sayfamız altında
iken.
//databaseimizi olusturduk database.yml altindaki isim ile
// şemalarımızı tablo haline getirdik. phpmyadmin ile tabloları görebilirsiniz.
| 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | | 11 | | 12 | | 13 | | 14 | | 15 | | 16 | | 17 | | 18 | | 19 |
|
| C:\projelerim\dengin>rake db:create
| | (in C:/projelerim/dengin)
| |
| | C:\projelerim\dengin>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 kategorilerim
1.Evinrude
2.Johnson
3.Tohatsu
http://localhost:3000/categories/1 ile eklediğiniz kategori görebilirsiniz.
şimdi sıra geldi motorlarımızı eklemeye
http://localhost:3000/motors/ ta new motor
|
|
| Title Category Specs
| | 9.9 HP Evinrude 1 9.9 bilgileri
| | 15 HP Evinrude 1 15hp Bilgileri
| | 25 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 ve
|
|
| ActionController::RequestForgeryProtection for details |
|
in altina
kaydediiyoruz. view layoutsun altina application.erb diye bir dosya yaratiyoruz.
diger layoutlari siliyoruz.
application.erb yi aciyoruz.
dizaynimiz şu şekilde oluyor
|
|
| <html>
| | <head>
| | <%= stylesheet_link_tag 'style' %>//css dosyamizin ismi css dosyamizi
| | // public/stylesheets in altina atmayi unutmayin.
| | </head>
| |
| | <body>
| | <%=yield %>// views/modelismi/action.html.erb nin icerigi buraya geliyor
| | </body> |
|