Rails – Action Pack – Kavramlar

Active Record modellerden sorumlu olan Rails kütüphanesi olduğu gibi, Action Pack ise view ve controller’dan sorumlu Rails kütüphanesidir.

Action Controller

  • Rails uygulamamızda gerçekleşen her türlü etkileşim ve hareket controller tarafından kontrol edilir.
  • Rails’te controller’lar Ruby sınıfları olarak tasarlanırlar.
  • Controller içerisinde, çeşitli action’lar için yazılmış metodlar bulunur.

Aksi belirtilmediği sürece herhangi bir Ruby sınıfı içerisindeki metodların durumu “public“‘tir yani herhangi bir kişi tarafından erişilebilir durumdadırlar. Eğer bir metodu “private” olarak tanımlarsanız, o metod yalnızca ait olduğu class içerisinde kullanılabilir olur. Private olarak tanımlanmış bir metodu ait olduğu class dışarısından çağırmaya çalışırsanız “NoMethodError” hatası döner.

Rails’te sıklıkla ve aksi belirtilmedikçe, bir action çalıştıktan sonra bir view render edilir. Action Controller, convention’ın bir sonucu olarak render edeceği view’ı action’ın adıyla bulmaya çalışır. Örneğin “app/controllers/articles_controller.rb” controller’ı içerisinde bulunan “new” metodu, convention gereği “/app/views/articles/new.html.erb” sayfasını render eder.

Action View

Controller ve View’ın iletişim halinde kalabilmesi için paylaşılan değişkenlerden (shared variables) faydalanırız. Bu değişlenlerin tanımı “@” sembolü ile başlar ve controller’da tanımlandıktan sonra view’dan çağırılabilirler.

Burada @articles değişkenimiz controller’dan geliyor.

Embeded Ruby (ERB)

ERB sayesinde Ruby kodlarımızı view içerisinde kullanabiliriz. View dosyalarımız içerisinde <% %> (evaluation embedding tags) ve <%= %> (output embedding tags) etiketlerini kullanarak Ruby kodlarının view’da işlemesini sağlarız. Bu iki etiketten yalnızca output türünde “=” işareti bulunduğuna dikkat ediniz. Output etiketi yani <%= %> ile, işlenen Ruby koduna ait çıktının print edilmesini istediğimizi belirtiriz. Oysa ki evaluation etiketleri yani <% %> kullanıldığında, etiketler içerisindeki kod işlenir ve süreç tamamlanır, yani herhangi bir print işlemi yapılmaz.

Helpers

Her ne kadar ERb ile view’da çeşitli Ruby kodlarını çalıştırabiliyor ve controller’da view’a dair işler yaptırabiliyor olsakta, bu durum MVC’nin yapısı ve mantığına terstir. Controller’ın asıl işi view kodu üretmek olmadığı gibi, view’in işi de mantıksal süreçleri çözümlemek değildir. View ile controller arasındaki bu boşluğu dolduran yapılara “helper” adı verilir. Helper’lar sorun yaratan bu boşluğu doldurarak controller ve view arasında bir köprü görevi görürler. Her bir controller’ın kendine ait helper’ı vardır. Örneğin “articles_controller.rb” için “articles_helper.rb” dosyası.

Action Pack Request Döngüsü

Action Pack request-response döngüsü aşağıdaki adımlardan oluşur:

  1. Rails uygulamamız dış dünyadan (çoğunlukla browser) bir request alır.
  2. Routing, çalışması gereken controller ve action’ı tespit etmek için gelen request’i parçalar.
  3. Request’i ele alacak controller belirlenir ve ilgili metodlar çağırılır.
  4. Controller model ile iletişime geçer. Çoğunlukla bir CRUD süreci gerçekleştirir.
  5. Browser’a (veya request’i yapan her ne ise) render edilecek sayfayı içeren veya yalnızca redirect’ten ibaret bir response döndürülür.

rails-action-pack-request-response-cycle

Leave a Reply