pillinetwork hesabınızla giriş yapın.

Ruby on Rails ile Web Programlama Bölüm 1

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)

1
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 kuruyoruz

1
ruby 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 kurabilirsiniz

1
ruby 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:\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...

1
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ındaki
database.yml dosyasını IDE miz ile açıyoruz. ve

1
2
3
4
5
6
7
8
9
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

1
ruby 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: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

1
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.

1
ruby script/generate scaffold Page isim:string content:text

1
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.

1
rake db:create
//databaseimizi olusturduk database.yml altindaki isim ile
1
rake db:migrate
// ş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

1
2
3
4
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

1
ActionController::RequestForgeryProtection for details
in altina
1
layout 'application'
kaydediiyoruz. view layoutsun altina application.erb diye bir dosya yaratiyoruz.
diger layoutlari siliyoruz.
application.erb yi aciyoruz.

dizaynimiz şu şekilde oluyor

1
2
3
4
5
6
7
8
9
<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>

<%=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.

Spacer
Spacer
/* thedon yazdı. 15 Mart 2010 17:35. 7 yorum var */

Yorumlar

<% kullanmasının özel bir nedeni var mı?

rails in tagı o biçimde. asp gibi .zannetmiyorum özel bir nedeni olsun. hiç dikkat bile etmemiştim asp ile aynı olması.

/* yarım yarım çok ses olacağına güçlü bir tek ses olalım. */

Daha önceden ROR ile ilgili bir çok makale okudum.ROR sorunsalının en başında ölçeklenebilirlik sorunlarından bahsediyorlardı.
Mısırdaki dedenizden miras kaldıysa ruby ile uğraşabilirsiniz falan diyorlardı :)

Şimdi twitter'ın harcadığı sunucu kaynaklarını merak ediyorum..

/* int? hayat = Teknoloji ?? 0; */

bilmiyorumda performans testlerime 2 aynı site, biri php biri ror ,. ror daha hızlı çıktı. ama daha detaylı incelemek lazım.

/* yarım yarım çok ses olacağına güçlü bir tek ses olalım. */

Güzel anlatım olmuş teşekkürler, bilmiyorum ama ben yine de ror'u bir deniyeceğim, ama yine de Türklerden çok fazla destek yok.

/* Tasarım harikası 4 etkileyici zamazingo ile tanışmak istermisiniz? O zaman hiç durmayın "Tasarım Harikası 4 Etkileyici Zamazingo" . Ucubenin de ucubesi hatta ucubeler ucubesi, bu ucube zamazingolara bakmadan edemiyeceksiniz. "En ucube 3 zamazingo". Laptoplara gün doğdu! Bakmadan edemiyeceğiniz ilginç laptop zamazingoları ve hayaranları. "En ilginç 4 laptop zamazingosu" . Kendi bildirgec.org'unu yaratmak istemez misin? "Bildirgeç benzeri sitenizi ücretsiz kurun!". Kendi mimleme sitene ne dersin? "Kendi mimleme sitenizi kurun!". Daha fazlası için beni takip etmeyi unutmayın :) arago .:::. */

rails in sitesine girin screencastler vs dolu anlatım var full api tek tek açıklanmış. partial render diye bir olay var orada utf-8 karakterler düzgün gözükmüyor bu nedenle hata alırsınız türkçe karakterlerde. bir sonraki versiyonda bu düzeltilecek haberiniz olsun.

/* yarım yarım çok ses olacağına güçlü bir tek ses olalım. */

ror u windows platformunda kuramayan olursa destek verebilirim. kurdum sorunlarla karşılaştım ve çözdüm. makalen güzel ama anlatım yetersiz kalmış. anlatımdaki sorun ise şu yüksek oranda anlatım bozukluğu ve atlamalar. genede güzel ve öncü bir paylaşım. eline sağlık.

üye olunpillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.

Bu Yazıyı Tutanlar

Bu yazıyı rapor et. Kural dışı içeriğe rastladığınızda editörlerimize rapor ederek müdahale edilmesini sağlayabilirsiniz. (Hangi durumlarda rapor edebilirim?)

Bu site

Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.

pilliilan

son yorumlar

arama

pillinetwork