Sinatra ile echo uygulaması yapalım
Andaç Karay Kudu, 07 Dec 2015
Bir önceki yazımda sinatradan bahsetmiştim. Sinatra’nın sitesindeki örnekten yola çıkarak bir hello world web uygulaması hazırlamıştık.
Sırada echo uygulaması var. Yani web uygulamasının sayfadaki formu kullanarak gönderdiğimiz mesajı bize göstermesini istiyoruz.
Öncelikle bir forma ihtiyacımız var. Sade bir form işimizi görecektir.
Formu HTML dili ile hazırladığımıza göre HTML dilinin kurallarına uymaya da özen gösterelim.
Tabi ki gönderdiğimiz mesajı da görmek istiyoruz.
HTML kodu içerisinde ruby kodu çalıştırmak için erb (embedded / gömülü ruby) etiketlerine (tag) ihtiyacımız var. HTML içerisinde <% ve %> etiketleri arasına yazdığımız her şey ruby dili ile yorumlanır. Eğer kodun çıktısını görmek istiyorsak <% yerine <%= kullanmamız yeterli olacaktır.
Sinatra, tilt kütüphanesi sayesinde pek çok şablon dilini destekliyor. Tilt, Sinatranın gem pakedinin bağımlılıkları içerisinde olduğundan sinatra ile birlikte kuruluyor. Bu nedenle ek bir işlem yapmamıza gerek yok.
Biz erb kullanmaya karar verdiğimiz için erb desteğini programımıza dahil edeceğiz.
Artık programımızın koduna geçebiliriz.
Formumuzda methodu POST olarak belirlediğimiz için gelen POST isteğini karşılamak için bir post metoduna ihtiyacımız var (HTTP ve istek metodları hakkında bilgi edinmek için wikipediadaki ilgili başlığa bir göz atabilirsiniz).
Sinatra, web isteklerinden gelen değerlere erişebilmemiz için params adında bir değişene sahip. Bu değerlere params değişkeni içerisinden adları ile ulaşabiliyoruz.
Dikkat ederseniz form içerisindeki giriş (input) alanımızın adı “message” ve bu alana yazdığımız değere de params[:message] ile erişiyoruz. Bu mesajı şablon içerisine gömdüğümüz ruby koduna aktarabilmek için @message adındaki bir değişkene atıyoruz.
İstersek HTML şablonumuzu “views” dizini içerisine “index.erb” adıyla kaydedip kullanabiliriz. Bu defa (uygulamayı basit tutmak adına) ayrı bir şablon dosyası kullanmak yerine, şablonu program kodunun sonuna ekleyeceğiz.
Uygulamamızı çalıştıralım.
Sonuç
Tabii ki http://localhost:4567 adresinden echo uygulamamıza erişebiliriz.