The Ruby on Rails Tutorial Kitabı Üzerine

Herkese merhabalar,

Bu yazıda sizlerle The Ruby on Rails Tutorial kitabı hakkındaki düşüncelerimi paylaşacağım ve buna ek olarak, eğer siz bu kitabı bitirirseniz sonunda nasıl bir uygulama ortaya çıkacağını görmeniz için, yaptığım uygulamayı ve kaynak kodlarını en sonda vereceğim. İlk olarak kitap hakkındaki genel düşüncelerimi, sonrasında önemli gördüğüm bölüm başlıkları ile ilgili düşüncelerimi paylaştım. Bu benim ilk yazım olacak, amacım hem kitap hakkındaki düşüncelerimi paylaşmak hem de Ruby veya Rails’e yeni başlayanlar ya da bu kitabı okumak isteyenlerin nelerle karşılaşacaklarını aktarmak. Hadi başlayalım :slightly_smiling_face:.

Kitap okuyucuya, kullanıcıların kayıt olup mikro postlar oluşturabildiği ve diğer kullanıcıları takip edebildiği Twitter benzeri bir web uygulaması yaptırarak RoR öğretmeyi amaçlıyor. Uygulamayı yaparken pagination, cookie ve session yönetimi, authentication, authorization, bcrypt ve faker gibi gemlerin kullanımı, hangi durumlarda test yazmalı, fixture ve seed oluşturma, SQL sorgularını optimize etmek gibi birçok konuyu öğreneceksiniz.

RoR’un yanı sıra

RoR örenmenin yanı sıra: komut satırı kullanımı, deployment süreçleri, TDD, hangi durumların güvenlik açığı oluşturabileceği, linux ortamında postgresql kurulumu ve ayağa kaldırılması, git kullanımı gibi birden fazla konuyu ve hata alıp çözdükçe daha fazlasını öğreniyorsunuz. Kitabı okurken mutlaka siz de projeyi kodlamaya gayret etmelisiniz aksi halde öğrendikleriniz unutabilir. Bölüm sonlarındaki egzersizleri yapmak da konuyu pekiştirmede etkili olacaktır. Benim açımdan, kitabın ingilizce olması da dil gelişimime bayağı bir katkı sağladı diyebilirim.

Test ve güvenlik açısından

Kitapta TDD ve red, green, refactor gibi test içeriklerine yer verilmesinden çok hoşlandım. Örneğin, user modelinde admin adında boolean bir attribute var ve curl yardımıyla yapılan bir PATCH isteği ile admin parametresine true değeri verilerek kullanıcıya admin hakkı sağlayan bir açık oluşuyor. İlk önce bu durumun oluşmadığını varsayan bir test yazarak çuvallıyoruz ve testin geçmesini sağlayacak kod değişikliklerini yaparak durumu kontrol altına alıyoruz. Günün sonunda, hem güvenlik hem de test üzerine bir şeyler öğrenmiş oluyoruz.

Yukarıdaki duruma ait bir test:

params hash’ini kısıtlayarak testin geçmesini sağlıyoruz:

controller

Modeling users bölümü

Kitaptaki amacımız Twitter benzeri bir uygulama yazmak. Bu bölümde, amacımıza uyan bir user modeli generate ediyoruz ve bazı attribute’lar için doğrulamalar(validations) yazıyoruz ve bunları TDD’ye uygun bir biçimde ilk önce testlerini yazarak yapıyoruz. Email değerinin eşsizliğini(uniqueness) doğrulamak için users tablosunun email kolonuna bir index ekliyoruz ve yazar bunun neden gerekli olduğunu full-table scan konusuna değinerek açıklıyor.

Updating, showing and deleting users bölümü

Bu bölümü önemli buluyorum çünkü yazar yetkilendirme(authorization) konusuna ve oluşan bazı güvenlik zafiyetlerinin nasıl kapatılacağı konusuna değiniyor. Burada kısaca kullanıcıların birbirlerinin verilerine erişmesini ve değiştirmesini engelliyoruz. Kullanıcı silme gibi işlemleri de sadece admin yetkisine sahip kullanıcıların yapabilmesini sağlıyoruz.

Son ve en sevdiğim bölüm

Burada kullanıcıların birbirini takip edebilmesini ve akışın(feed) takip edilen kullanıcıların postlarına göre yeniden kodlanmasını sağlıyoruz. Özellikle bu bölümü daha iyi anlayabilmek için biraz SQL bilgisine sahip olmanız iyi olabilir çünkü akışı kodlamak için bir SQL sorgusu yazmanız gerekecek.

Sonuç olarak

Kitap 1000 sayfaya yakın olduğundan, benim için okuması ve sindirmesi birazcık uzun sürdü. Daha önce web uygulaması geliştirmek ve SQL sorgularına aşina olmak işimi kolaylaştırdı diyebilirim. Eğer okumaya karar verdiyseniz ve fazla bir sorunla karşılaşmak istemiyorsanız kitaptaki rails ve ruby versiyonlarına uymanızı tavsiye ederim. Kodlara göz gezdirmeniz ve uygulamada gezinmeniz için linkleri bırakıyorum.

Uygulamanın reposu
Sıkıntı çıkmamasını umduğum ve herokuya deploy ettiğim uygulamanın kendisi :slight_smile:
Kitaba buradan erişebilirsiniz

Umarım işinize yaramıştır, diğer yazılarda görüşmek üzere :gem:

Eline sağlık @alpthedev güzel bir yazı olmuş. :clap:

2 Beğeni