5 puan yazan GN⁺ 2025-07-31 | 3 yorum | WhatsApp'ta paylaş
  • Ruby ekosistemi için “düşük soyutlama, düşük tören (low-ceremony)” odaklı basit ve güçlü bir web çerçevesi; kontrolör ve REST kaynağı kavramı olmadan sayfa, form ve tek eylem odaklı bir yapı sunar
  • Sunucu render'lı HTML, doğrudan yazılan JS/CSS, OpenTelemetry entegrasyonu, Sequel·OptionParser gibi modern Ruby araçları dahili olarak gelir; kurulum ve geliştirme dakikalar içinde yapılabilir
  • Sınıf tabanlı yapı, gerçek tip temelli oturum, form ve parametre yönetimi ile dinamik metot/hash kullanımını en aza indirerek net kod ve otomatik dokümantasyon hedefler
  • Modern web platformunun aktif kullanımı: sunucu-istemci doğrulamanın bütünleştiği form UX, BrutJS(Web Components), esbuild ile CSS paketleme ve hashleme, güvenlik politikaları ve DB tasarımındaki temel yapıların güçlendirilmesi
  • YAML'in minimuma indirilmesi, Ruby/Hash tabanlı ayarlar ve net adlandırma/rol ayrımıyla, gereksiz soyutlama veya desen dayatmadan Ruby ile tarayıcı teknolojilerini eğlenceli şekilde kullanmayı hedefler

Brut çerçevesinin ana özellikleri

Tamamen yeni bir yapı – kontrolör olmadan sayfa odaklı

  • Kontrolör, REST kaynağı ve route action yerine sınıf tabanlı sayfa, form, tek eylem işleyicileri ile oluşturulur
  • HTML doğrudan sunucuda üretilir, JS/CSS istediğiniz gibi yazılabilir
  • Örnek: Zaman gösterimi sayfası doğrudan TimePage < AppPage ile tanımlanır

Modern web platformunun aktif kullanımı

  • Sunucu ve istemci doğrulamasını bütünleştiren form UX
  • BrutJS(Web Components) ile HTML'in kademeli genişlemesi desteklenir
  • esbuild ile CSS paketleme ve hashleme; PostCSS veya SASS olmadan sade bir şekilde yapılır

Geliştirme verimliliği ve temel yetenekler dahili

  • OpenTelemetry tabanlı enstrümantasyon, Sequel tabanlı veri erişimi, OptionParser tabanlı komut satırı otomasyonu
  • Temel güvenlik politikaları, DB kolon/foreign key varsayılanları ve indeksler, her zaman timezone-aware zamanlar, kolay lokalleştirme (Localization)
  • RSpec testleri, Faker/FactoryBot ile veri üretimi, Phlex ile HTML üretimi

YAML dışlama, net ayar yapısı

  • I18n, Ruby Hash tabanlıdır; dinamik ayarlar dotenv ile yönetilir (YAML neredeyse hiç kullanılmaz)
  • docker-compose yalnızca istisna olarak YAML kullanır

Gereksiz soyutlama veya desen zorunluluğu yok

  • Açık adlandırma ve rol ayrımı (ör. WidgetsPage, /widgets adresine gider)
  • Veri katmanı (DB::Widget) ile alan katmanı (Widget) tamamen ayrılabilir
  • Kontrolör kavramı yok, iş mantığını istediğiniz şekilde uygulayabilirsiniz
  • Karmaşık fonksiyonel desenler, monadlar, Proc vb. zorunlu kılınmaz

Geliştirme deneyimi ve esneklik

  • RSpec gibi modern Ruby ekosistemi araçları temel olarak dahildir
  • Phlex(HTML), Faker/FactoryBot, Sequel, OpenTelemetry gibi ana kütüphaneler aktif şekilde kullanılır
  • Tekrarlayan boilerplate/ayar/karar süreçlerinden kurtulup, Ruby ve tarayıcı teknolojilerinin “zevkine” odaklanır

Neden Brut?

  • Rails gibi mevcut çerçevelerin tekrarlayan kurulumları, sürekli tasarım/ yapı tartışmaları ve gereksiz esneklik yerine kodun kendi keyfini hedefler
  • Hızlı bir şekilde inşa edilebilen, Ruby tabanlı bir web uygulaması çerçevesi olarak geliştirmeyi ve dağıtımı eğlenceli hale getirmek üzere verimlilik ve açıklıka odaklanır

Başlangıç ve gelecek yol haritası

  • Brut resmi Docker imajı, komut bazlı hızlı uygulama oluşturma ve çalıştırma desteği
  • ADRs.cloud gibi gerçek dünya örnek uygulamalar sunar
  • 1.0 sürümü ve resmi yol haritasının güncellemeleri düzenli olarak planlanıyor

3 yorum

 
jhk0530 2025-07-31

https://naildrivin5.com/blog/2025/…

Sanırım bu bağlantıyla düzeltmek gerekiyor

 
colus001 2025-07-31

Bağlantı yanlış verilmiş gibi görünüyor.

 
GN⁺ 2025-07-31
Hacker News görüşleri
  • forms ve pages odaklı yaklaşımı beğendim; ben de uygulamalarımda buna benzer bir yaklaşım kullanıyorum. Tüm etkileşimler Forms ve Links tarafından yönlendiriliyor, JavaScript ile yaptığım tüm iyileştirmeler de aslında mevcut bir formu (gizli olanlar dahil) tıklamaktan ibaret. HTML'i her zaman doğrudan inceleyebildiğim için hangi route'un etkileşimi gerçekten işlediğini net biçimde görebiliyorum. controllers bence gereğinden fazla kullanılıyor; pratikte forms ve models (backend) ile views (Pages) yeterli oluyor. Ayrıca framework, çok sayıdaki validation işini veya controller içinde tekrar eden prosedürleri daha zarif biçimde ele alabilir.

    • Formu tıklama olayıyla simüle etme nedenini merak ediyorum; submit() metodunu doğrudan çağırmaktan farkı ne?
  • Monad, algebraic data types, currying ya da her şeyi Proc ile ele almak gibi karmaşık kavramları mutlaka anlamak gerekmediğine dair açıklamayı beğendim. İş mantığında functor kullanmak istiyorsanız bu tamamen sizin tercihiniz olabilir. Bu esneklik hoşuma gitti; birkaç yetkin çalışma arkadaşıyla birlikte yürütülen bir yan projede denemek isteyebilirim.

  • Bu framework, Sinatra'nın sadeliği ile Rails'in zenginliği arasında harika bir orta nokta olabilir gibi görünüyor. Ben basit uygulamalarda Sinatra, gerektiğinde de Rails kullandım; ama karmaşık olmayan uygulamalarda Rails bazen gereksiz derecede ağır geliyordu. Bunu yeni bir seçenek olarak denemeyi heyecan verici buluyorum.

    • Değerlendirilebilecek bir alternatif olarak Roda da var. Küçük projelerde benim için çok iyi sonuç verdi ve ölçeklenebilirliği de iyiydi. Plugin sistemi sayesinde yeteneklerini genişletmek kolaydı, routing tree ile çalışmak da rahattı.

    • Benim için hanami en iyi orta noktaydı, ama bundan sonra bruts'ın nasıl gelişeceğini yakından izleyeceğim.

  • David'in Sustainable Rails kitabını gerçekten çok seviyorum; Rails konusunda her zaman önerdiğim bir kitaptır. Bu framework'ün yaklaşımı da etkileyici. Bu küçük alternatif framework'lerden biri Sorbet'i tam anlamıyla benimseyip bunu form validation gibi alanlarda kullansa gerçekten ilginç olurdu. Elbette bu, gradual typing yaklaşımıyla çelişebilir ama deneysel olarak eğlenceli olurdu.

    • David sadece çok yetenekli bir geliştirici değil, aynı zamanda çok iyi bir konuşmacı. Kitabın temasıyla da örtüşen şu video konuşmasını tavsiye ederim: https://www.youtube.com/watch?v=CRboMkFdZfg

    • Sorbet güzel ama yapı zorlaması ve veri doğrulama için kişisel olarak dry-rb ekosistemini tercih ediyorum.

  • Bu framework'ün alışılmadık bir lisans kullandığını görüyorum; peki bu, source code'u göremeyeceğimiz anlamına mı geliyor?

  • Bu proje bana eski Camping framework'ünü hatırlattı, sadece dinamik parent class oluşturucuları yok.

  • Brut'un resmi sitesinde de (https://brutrb.com/overview.html) ilginç içerikler vardı.

  • Örnek sitede giriş yapmayı denedim ama GitHub kimlik doğrulamasından hemen sonra hata aldım.

    • Ben yazarım; şu anda kötüye kullanımı önlemek için örnek sitede girişi tamamen kapattım. Bugün aniden herkese açmaya karar verdim, bu yüzden henüz herkesin giriş yapmasına izin verecek kadar hazır değil. Yerelde çalıştırabilir ya da https://brutrb.com/adrs.html adresinde sayfaları gezip bağlantılara tıklayabilirsiniz.
  • Henüz Ruby kullanmıyorum ama projeyle ilgilendiğim için yıldız verdim; bu proje gerçekten Ruby'yi denememe vesile olabilir.

  • Özellikle Phlex seçimini beğendim. Ayrıca bu framework'ün Datastar js library ve onun SSE (server-sent events) kullanımına da ne kadar uygun olacağını merak ediyorum, teşekkürler.