İçeriğe geç

Ruby on Rails Haftası #11 | Rails- Scaffolding

Tahmini Okuma Süresi: 7 dakika

Rails haftası serimizin 11. Yazısına kadar geldik. Son günlerde aldığım yorum ve mesajlar beni çok mutlu etti ve elimden geleni yapmaya devam edeceğim. #10 numaralı yazımızda Layout‘lardan ve CSS eklemelerinden bahsetmiştik. Bugün ise Rails Scaffolding nasıl yapılır, sorusuna cevap arayıp, projemizde uygulayacağız. 🙂

Ruby on Rails Haftası #10 | Rails – Layouts

Rails uygulamalarını geliştirirken, özellikle bir veritabanındaki verilere basit bir arayüz sunarken, scaffolding yöntemini kullanmanız yararlı olacaktır.

Scaffolding, basit bir şekilde demo heyecanı sunar. Bazı avantajlarından bahsedelim:

  • Geri bildirim almak için kullanıcılarınızın önünde hızlı bir şekilde kodlar yazabilirsiniz.
  • Daha hızlı bir şekilde başarıya ulaşabilir ve motive olursunuz.
  • Oluşturulan koda bakarak Rails’in nasıl çalıştığını öğrenebilirsiniz.
  • Scaffolding yapımı, gelişiminizi hızlandırmak için bir temel oluşturabilir.

Scaffolding Öğrenelim

Scaffolding yapısını anlamak için cookbook  isimli bir veri tabanı ve recipes adlı bir tablo oluşturarak başlayalım.

Boş bir Rails Web Uygulaması Oluşturalım

Bir komut penceresi açın ve bu yemek kitabı web uygulamasını oluşturmak istediğiniz yere gidin (Ben C:/ ruby dizininde geliştirme yapacağım.). Ardından komutu çalıştıralım.

  C:\ruby> rails new cookbook –d mysql

Veri Tabanı Oluşturalım

Şimdi cookbook/config/database.yml dosyamızı açarak, “password:   “ satırını şu şekilde değiştiriyoruz.

  password: mysql_root_password

Not: “mysql_root_password” yerine mysql kurulumu yaparken kullandığınız parolayı yazmanız gerekiyor.

Ve şimdi komut satırımızda C:/ruby/cookbook dizinine gelip, rake db:create komutunu çalıştırıyoruz ve veri tabanı oluşturuyoruz.

Bu komut sayesinde “cookbook_development” ve “cookbook_test” isimli iki veri tabanı oluşturduk.

MySQL komut satırında aşağıdaki komutları kendi ayarlarınıza göre düzenleyerek devam ediniz.

mysql> grant all privileges on cookbook.*
to 'root'@'localhost' identified by 'password';
mysql> FLUSH PRIVILEGES;

Rails’e veritabanının nasıl bulacağını söylemek için yapılandırma dosyasını c: \ ruby \ cookbook \ config \ database.yml düzenleyin ve veritabanı adını yemek kitabı olarak değiştirin. Parola kısmını boş bırakın. Bittiğinde şöyle görünmesi gerekiyor. 🙂

Rails, farklı veritabanları kullanarak geliştirme modunda, test modunda veya üretim modunda çalışmanıza izin verir. Bu uygulama her biri için aynı veritabanını kullanıyor.

 

Scaffold Kodumuzu Generate Edelim

Scaffolding hareketi ile Rails dinamik olarak ihtiyaç duyduğu tüm kodları üretir. Scaffold’u senaryo olarak çalıştırdığımızda, tüm kodu diske yazabiliriz, burada araştırıp inceleyebilir ve gereksinimlerimize uyarlamaya başlayabiliriz.

Şimdi, scaffold yardım kodunu kullanarak Scaffold kodunu manuel olarak oluşturmaya başlayalım:

 cookbook> rails generate scaffold recipe

Dosyalar aşağıda gösterildiği gibi otomatik olarak üretilir.

Controller Katmanı

Controller katmanının arkasındaki kodu inceleyelim. Bu kod scaffolding generator tarafından üretilir. App / controllers / recipes_controller.rb’yi açarsanız, “index, Show, new, create, edit, update, destroy” methodlarını göreceksiniz.

Bir Rails uygulamasının kullanıcısı bir eylemi seçtiğinde, örn. “Show” – controller uygun bölümde yazdığınız kodu çalıştıracaktır – “def show” – ve daha sonra varsayılan olarak – “show.html.erb” – adlı bir şablon oluşturacaktır.

Not: Bu varsayılan davranış üzerine uygulamalar yazılabilir.

Controller, find, find_all, new, save, update_attributes ve veri tabanını tablolara taşımak için ActiveRecord yöntemlerini kullanır.

Herhangi bir SQL deyimi yazmak zorunda kalmadığımıza dikkat çekmek istiyorum; Rails otomatik olarak bu işi bizim yerimize yapıyor.

Bu tek kod satırı, veritabanı tablosunu canlandıracaktır. Verilerinize basit bir arayüz ve yollar sağlayacaktır:

  • Yeni kayıt oluşturma
  • Geçerli kayıtları düzenleme
  • Geçerli kayıtları görüntüleme
  • Geçerli kayıtları silme (yok etme)

Bir girdi oluştururken veya düzenlerken, scaffolding sizin için form üretimi ve işlenmesi gibi tüm zor işleri yapar ve aşağıdaki türdeki girdileri destekleyerek akıllı biçimde form oluşturmayı sağlar:

  • Basit metin dizeleri
  • Metin alanları (veya büyük metin blokları)
  • Tarih seçiciler
  • Tarih-saat seçicileri

Tablo oluşturmak ve korumak için Rails Migration özelliğini kullanabilirsiniz.

  rake db:migrate RAILS_ENV=development

Şimdi, cookbook dizinine gidin ve aşağıdaki komutu kullanarak Web Sunucusu’nu çalıştırın:

  cookbook> rails server

Şimdi, bir tarayıcı açın ve http://localhost:3000/recipe/new adresine gidin. Bu, tarifler tablosunda yeni girdiler oluşturmanız için bir ekran sağlayacaktır. Ekran görüntüsü aşağıda gösterilmektedir:

Yeni bir tarif oluşturmak için Create düğmesine bastığınızda, kaydınız tarifler tablosuna eklenir ve aşağıdaki sonucu gösterir:

Kayıtları düzenleme, gösterme ve yok etme (edit, show ve destroy) seçeneğini görebilirsiniz. Bu seçeneklerle oynamaya çalışın ve keşfedin. 🙂

Uygulama ve keşfetme sırasında karşılaştığınız güzel şeylerden veya hatalardan bahsetmeyi de unutmayın! 🙂

http://127.0.0.1:3000/recipe/list URL’sini kullanarak tarifler tablosunda bulunan tüm tarifleri de listeleyebilirsiniz.

Modeli Geliştirme

Rails, bize çok fazla hata işlemi sunar. Bunu anlamak için, boş recipe modeline bazı doğrulama kuralları ekleyelim:

App / models / recipe.rb dosyasını aşağıdaki gibi değiştirin ve uygulamanızı test edin:

Bu kayıtlar otomatik kontrol sağlayacaktır.

  • validates_length_of – alan boş olamayacağını ve çok uzun olamayacağını belirtir.
  • Validates_uniqueness_of – ‘yinelenen değerler bulundu’ şeklinde uyarı verecektir. Varsayılan Rails hata mesajı yerine, burada özel bir mesaj verdik.

View Katmanı

Tüm görünümler ve karşılık gelen tüm controller yöntemleri scaffolding komutu tarafından oluşturulur ve “app / views / recipes” dizininde bulunur.

Scaffolding Neden Farklı?

Önceki bölümlerimizi okuduysanız, listelemek, göstermek, silmek ve veri oluşturmak için methodlar oluşturduğumuzu görmüş olmalısınız, ancak scaffolding bu tür basit işleri otomatik olarak yapar.

Rails Haftası 11.yazımızda Scaffolding yapısının Rails ile nasıl oluşturulduğunu bir örnek yardımı ile gördük. Scaffolding’in sadece Rails Framewok’üne özel olmadığını da belirtmek isterim. Benzer yapılar diğer frameworklerde de bulunmasına rağmen, en düzgün ve sistemli olanlarından birisi olduğunu söyleyelim. Bu yazıyı beğendiyseniz paylaşmayı ve yorum yapmayı, takıldığınız noktaları ve görüşlerinizi belirtmek için sağ üst köşedeki sosyal medya hesaplarımdan bana ulaşmayı unutmayın. Teşekkürler. 🙂

Kaynaklar

Rails-Scaffolding

https://www.tutorialspoint.com/ruby-on-rails/

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir