RubyOnRails iskeletinin Ruby dili kullanması gibi Grails de Groovy dilini kullanan bir web iskeletidir. Yapı olarak RubyOnRails yapısına çok benzer.
Grails kurulumu öncesi Groovy dilinin kurulu olması ve bir miktar temel özelliklerini de öğrenmek iyi olacaktır. Daha sonra Grails sitesinden binari dağıtım zip dosyasını indirip klasörü açarız.
Ortam değişkenlerinde GRAILS_HOME değişkenine zip dosyayı açtığımız klasörün path'ini veririz.
Daha sonra "path" ortam değişkenine de "%GRAILS_HOME%\bin" değerini ekleriz.
Şimdi çalışmasını test edelim. Komut isteği açıp
grails -versionkomutunu girelim. Şuna benzer bir cevap dönerse kurulum olmuş demektir.
Yeni Uygulama Oluşturma
Grails uygulaması oluşturmak için "grails" komutunu tanımak gerekir.
grails << komut adı >>"create-app" komutu ile yeni uygulama oluşturulur:
grails create-app test
Bu komut "test" adında bir klasör oluşturup içine grails uygulaması içim gereken temel dosyaları koyacaktır. Dilerseniz bu klasör içindeki dosyaları bir inceleyin , ön bilgi edinin.
Şimdi konsolda üretilen bu klasör içinde girelim ve burada Grails etkileşimli konsolunu çalıştıralım:
cd testŞuna benzer bir prompt göreceğiz:
grails
Ne istiyoruz? Basitçe ekranda "Merhaba Dünya" yazan bir web sayfası. Grails'de yeni bir sayfa istediğimizde onun için bir kontrolör ve bir aksiyon tanımlarız. Henüz bir kontrolör tanımlamadığımız için ilk önce onu "create-controller" komutuyla tanımlayalım:
grails> create-controller merhaba
Etkileşimli konsolda komut isimleri için otomatik tamamlama özelliği vardır. Bu yüzden sadece "cre" yazıp tab tuşuna basarsak tüm "create-*" ile başlayan komutların bir listesi çıkacaktır. Bikaç karakter daha girip tab tuşlayarak komutun tamamının gelmesini sağlayabiliriz.
Yukarıdaki komut "grails-app/controllers/test" klasörü içinde "MerhabaController.groovy" adında bir kontrolör dosyası oluşturur. Neden yine bir "test" klasörü daha oluşturuldu? Çünkü bu Groovy dilini icat eden Java dünyasında tüm sınıfların bir paket içerisinde olması geleneği vardır.
Şimdi kontrolörümüz oluştuğuna göre "Merhaba Dünya!" yazan sayfamızı içinde tanımlayalım. "MerhabaController.groovy" dosyasını bir text editörü ile açalım. Ben genelde "Sublime Text" ediitörü kullanıyorum. Bir "render" sayfası için dosyayı şu hale getirelim:
Bir aksiyon kısaca bir metod ile ifade edilir. Buradaki aksiyon ise Grails'in "render" metodu ile sayfa yayınlar.
İşimiz tamam. Şimdi test edelim. Bunun için server'ı çalıştırmamız gerekiyor. Buna ait komut ise "run-app". Grails konsolda bunu girelim:
grails> run-appBir sürü şeyler yazdıktan sonra "executing" mesajı gelip durulur. Tarayıcımızı açıp adres yerine "localhost:8080" yazdığımızda karşımıza "Wellcome to Grails" sayfası çıkacaktır.
Bu Grails iskeletinin standart açılış sayfası. Peki bizim "Merhaba Dünya!" yazılı sayfa nerede?. Sayfaya bakarsanız aşağıda "Available Controllers" diye bir liste var. Ya bunu tıklayarak ya da adrese kontrolör adımız olan merhabayı ekleyerek ("/merhaba" şeklinde) kontrolörümüzün index sayfasına ulaşabiliriz.
Şükür çalışan ilk uygulamamız göründü. Bir yan bilgi, önceki "Wellcome to Grails" sayfası "grails-app/view/index.gsp" dosyasında kodu yazılmış olan sayfadır.
Son olarak bir kontrolörde birden çok aksiyon olabilir. Bunların herbiri bir başka sayfaya karşı gelir (aslında başkası da var da şimdilik AJAX çağrılarını konu dışı bırakıyoruz).
Uygulama adımızı da adres bilgisine dahil edelim dersek " grails-app/conf/application.yml" dosyasını editörde açıp en sonuna şu satırları ekleyelim:
Artık sayfamıza ulaşmak için tarayıcı adres barında "localhost:8080/test/merhaba" yazmalıyız.
DAHA İŞE YARAR BİR UYGULAMA
Artık bir veritabanı uygulaması yapalım. Uygulamamızda ziyaretçilerin kayıtlarını tutmayı planlıyoruz.
Öncelikle "ziyaret" adında bir uygulama oluşturmak için uygulamayı koymayı düşündüğümüz klasörde consolu açıp
grails create-app ziyaretkomutunu girelim ve uygulama klasörleri ve dosyaları oluşsun. Test etmek için önce uygulama klasörüne geçip, orada grails konsolunu çalıştıralım.
cd ziyaretAçılan grails konsolda
grails
run-appyazarak uygulamanın çalışmasını bekleyelim. Server'ın çalıştığına dair yazı geldikten sonra tarayıcımızda "localhost:8080" adresine gidersek standart Wellcome to Grails sayfası açılacaktır. Konsolda "stop-app" yazarak ya da Ctrl-C basarak durdurabiliriz.
DOMAIN MODELİNİN OLUŞTURULMASI
Uygulamamız şu anda bir şey yapmıyor. Ziyaretçilerin geribildirimlerini kaydedeceğimiz veritabanı karşılığı olarak Domain Modelimizi oluşturalım. Tablolara karşı gelecek sınıflar şu şekilde olacak:
- Class Geribildirim : Ziyaretçinin geri bildiriminin kendisi
- Class User : Geri bildirimi yapan kişi bilgisi
- Class Yorumlar : Geri bildirime yapılan yorumlar.
Grails bu sınıflara ait boş kalıp dosyalarını oluşturabilir. Şimdi önce bu domain sınıflarını oluşturalım. Grails konsolda şu komutları girelim:
grails> create-domain-class ziyaret.GeribildirimBu komutlar ile uygulamamızın "grails-app/domain/ziyaret" klasörü altında yukarıdaki 3 domain sınıfının tanımlarını içeren 3 adet ".groovy" dosyası oluşturulur. Şimdi bu dosyaları aşağıdaki şekillerdeki gibi değiştirelim.
grails> create-domain-class ziyaret.User
grails> create-domain-class ziyaret.Yorum
Geribildirim.groovy:
User.groovy:
Yorum.groovy:
Domain modeli değiştirdiğimizde server'ı tekrar başlatmamız ve Grails konsolda "clean" komutu çalıştırmamız gerekir.
DİNAMİK SCAFFOLD
Grails kullanıcı arabirim sayfalarının temellerinin dinamik veya statik hazırlanmasını sağlayabilir. Dinamik hazırlamayı kullanırsak Grails uygulaması domain sınıfların arabirim sayfalarını dinamik olarak hazırlar. Kullanıcı arabirim işlemleri Create (Yeni kayıt), Read (kayıt okuma), Update (kayıt değiştirme) ve Delete (kayıt silme) işlemlerinden yani CRUD oluşur.
Domain sınıfımız için dinamik hazırlama kullanmak için şu komutları gireriz:
grails> generate-controller ziyaret.GeribildirimBu komutlar "grails-app/controllers/ziyaret" klasöründe kontrolör sınıf dosyalarını oluşturur.
grails> generate-controller ziyaret.User
grails> generate-controller ziyaret.Yorum
Bu dosyaların içinde dinamik hazırlamayı aktif hale getirmek için "def index" diye başlayan metod yerine "static scaffold = DomainClassName" yazarız. Messela Geribildirim:
Diğerlerini de değiştirip kaydedelim.
Şimdi uygulamamızı test edelim
grails> run-appŞimdi "localhost:8080" adresine gittiğimizde az önce tanımladığımız kontrolörlerin "Available Controllers" listesine eklendiğini görürüz.
Grails konsolunu Windows'ta açmak için uygulama root klasöründeki "grailsw.bat" dosyasını tıklayarak da çalıştırabilirsiniz.
Listeden kullanıcıları görmek için UserController linkine tıkladığımızda karşımıza boş bir liste çıkacak çünkü daha kullanıcı kaydı eklemedik.
Burada "New User" linkine tıklayıp yeni kullanıcı tanımlayalım:
Girdiğimiz veriler domain sınıf kriterlerinde yazdıklarımıza uygunsa bir kullanıcı kaydı veritabanına eklenecektir.
Şimdi de bir Geribildirim kaydı yapalaım. Ana sayfadan linki tıklayığ geribildirimlere oradan da "new" linkine tıklayıp yine kayıt sayfasına gelebiliriz.
Dikkat ederseniz kullanıcı isimleri bir dropdown liste olarak geldi. Nedeni domain sınıflarını tanımlarken Geribildirim sınıfına User tipinde bir sütun eklemiş olmamız, Geribildirim kaydını User kaydına bağladı , User sınıf tanımında da "toString()" metoduna sadece kullanıcının isim bilgisini dönmesini belirttiğmiz için de listeye sadece ismler geldi.
Geribildirim sınıfında ayrıca "hasMany" ile yorumlara atıfta bulunduğumuz için "Add Yorum" linki de geldi.
STATİK SCAFFOLD
Peki görsel sayfalarımızı kendimiz düzenlemek istersek? Bu durumda statik scaffolda geçmemiz gerekiyor. Bunun için ilk önce Grails konsolda görsellerimizi oluşturmasını isteyeceğiz.
grails> generate-views ziyaret.GeribildirimDaha sonra dinamik scaffold için yaptığımız değişikliği geri almalıyız. (Keşke "def index" diye başlayan satırları silmeseydik)
grails> generate-views ziyaret.User
grails> generate-views ziyaret.Yorum
Az evvel verdiğimiz görsel üretme komutları "grails-app/views" altında her modelimiz için bir klasör tanımlayıp içinde gerekli görsel dosyalarını ".gsp" uzantılı (Groovy Server Pages) olarak ekledi. Bu dosyalar içine Groovy kodları eklenmiş standart HTML dosyalarıdır. Her bi model için "create, edit, index ve show" görselleri oluşturulmuştur.
ÜRETİLEN GÖRSELLERİ DEĞİŞTİRMEK
Üretilen görselleri istediğimiz gibi değiştirebiliriz. Örneğin aşağıdaki değişikliği yaparak yorum ekleme sayfasında isimin yorumdan önce yazılmasını sağlayabiliriz. "views/geribildirim/create.gsp" dosyasında şu değişikliği yapalım.
Böylece kullanıcı seçimini en başa aldık. Ayrıca "f:all" yerine tek tek tablo sütun değerlerinin nasıl gösterileceğini de gördük.
Eh, bu kadar yeter. Amacım burada sizlere bir şeyler öğretmek değil, benim dikkatimi çeken şeylere sizin de dikkatinizi çekmek. İnşallah tekrar görüşmek nasip olur..
Böylece kullanıcı seçimini en başa aldık. Ayrıca "f:all" yerine tek tek tablo sütun değerlerinin nasıl gösterileceğini de gördük.
CSS KULLANMAK
CSS dosyalarını değiştirerek görsellerin şeklini değiştirebiliriz. Örneğin "assets/stylesheets/application.css" dosyasına aşağıdaki satırları ekleyerek geribildirim yazısının girildiği input box genişliği artırılabilir.
Eh, bu kadar yeter. Amacım burada sizlere bir şeyler öğretmek değil, benim dikkatimi çeken şeylere sizin de dikkatinizi çekmek. İnşallah tekrar görüşmek nasip olur..
Hiç yorum yok:
Yorum Gönder