- สำหรับระบบนิเวศของ Ruby เป็นเว็บเฟรมเวิร์กที่เรียบง่ายและทรงพลังบนหลักการ นามธรรมต่ำและขั้นตอนน้อย (low-ceremony) และมอบโครงสร้างแบบเน้น หน้า ฟอร์ม และการกระทำเดี่ยว โดยไม่ใช้แนวคิด คอนโทรลเลอร์และทรัพยากร REST
- การเรนเดอร์ HTML ฝั่งเซิร์ฟเวอร์, การเขียน JS/CSS ด้วยตัวเอง, การเชื่อมต่อ OpenTelemetry, เครื่องมือ Ruby สมัยใหม่อย่าง Sequel และ OptionParser ถูกรวมไว้ในตัว ทำให้ติดตั้งและพัฒนาได้ภายในไม่กี่นาที
- โครงสร้างแบบอิงคลาส, การจัดการเซสชัน ฟอร์ม และพารามิเตอร์ตามชนิดข้อมูลจริง การลดการใช้เมธอดไดนามิกและ Hash ให้เหลือน้อย เพื่อให้ได้ โค้ดที่ชัดเจนและมีการสร้างเอกสารอัตโนมัติ
- การใช้ประโยชน์จากแพลตฟอร์มเว็บล่าสุด: การรวมการตรวจสอบฝั่งเซิร์ฟเวอร์และไคลเอนต์, BrutJS (Web Components), การ bundle และใส่ hash ให้กับ CSS ด้วย esbuild, และการเสริมทักษะพื้นฐานด้านนโยบายความปลอดภัยและการออกแบบ DB
- ลดการใช้ YAML และการตั้งค่าด้วย Ruby/Hash พร้อมชื่อและการแยกบทบาทที่ชัดเจน เป้าหมายคือการใช้ Ruby และเทคโนโลยีเบราว์เซอร์อย่างสนุกโดยไม่บังคับนามธรรมหรือ pattern ที่ไม่จำเป็น
คุณสมบัติหลักของเฟรมเวิร์ก Brut
โครงสร้างใหม่โดยสมบูรณ์ – เน้นหน้าแทนคอนโทรลเลอร์
- แทนคอนโทรลเลอร์ ทรัพยากร REST และ route action ด้วย คลาสหน้า คลาสฟอร์ม และตัวจัดการแอ็กชันเดี่ยว
- HTML ถูกสร้างโดยตรงบนเซิร์ฟเวอร์ สามารถเขียน JS/CSS ได้ตามต้องการ
- ตัวอย่าง: หน้าแสดงเวลา สามารถกำหนดได้ทันทีด้วย
TimePage < AppPage
การใช้ประโยชน์จากแพลตฟอร์มเว็บสมัยใหม่อย่างเต็มที่
- ประสบการณ์ผู้ใช้ฟอร์มแบบบูรณาการการตรวจสอบทั้งฝั่งเซิร์ฟเวอร์และไคลเอนต์
- รองรับการขยาย HTML อย่างค่อยเป็นค่อยไปด้วย BrutJS (ไลบรารี Web Components)
- ทำ CSS bundle และการตั้ง hash ด้วย esbuild อย่างกระชับ โดยไม่ต้องใช้ PostCSS หรือ SASS
พื้นฐานการพัฒนาที่มีประสิทธิภาพในตัว
- OpenTelemetry instrumentation ในตัว, การเข้าถึงข้อมูลด้วย Sequel, และการทำ automation คำสั่งด้วย OptionParser
- นโยบายความปลอดภัยเริ่มต้น, ค่าเริ่มต้นคอลัมน์/foreign key/index ของ DB, เวลาแบบ timezone-aware เสมอ, และการกำหนด locale ที่ใช้งานง่าย (Localization)
- การทดสอบด้วย RSpec, การสร้างข้อมูลด้วย Faker/FactoryBot, และ การสร้าง HTML ด้วย Phlex
ลดการใช้ YAML และโครงสร้างการตั้งค่าที่ชัดเจน
- I18n ใช้ Ruby Hash เป็นหลัก และการตั้งค่าที่เปลี่ยนได้ถูกจัดการด้วย dotenv (แทบไม่ใช้ YAML)
- ใช้ YAML ก็ต่อเมื่อเป็น docker-compose เท่านั้น
ไม่บังคับการนามธรรมหรือ pattern ที่ไม่จำเป็น
- ตั้งชื่อและโครงสร้างให้ชัดเจน (เช่น
WidgetsPage เข้าถึงที่ /widgets)
- สามารถแยกเลเยอร์ข้อมูล (DB::Widget) และเลเยอร์โดเมน (Widget) ออกจากกันได้อย่างสมบูรณ์
- ไม่มีแนวคิดคอนโทรลเลอร์ สามารถเขียน business logic ตามวิธีที่ต้องการได้
- ไม่บังคับใช้รูปแบบฟังก์ชันนัลที่ซับซ้อน, Monad, Proc และ pattern อื่น ๆ
ประสบการณ์การพัฒนาและความยืดหยุ่น
- มีเครื่องมือสำคัญของ ecosystem Ruby สมัยใหม่อย่าง RSpec อยู่ในตัว
- ใช้ไลบรารีหลักเช่น Phlex (HTML), Faker/FactoryBot, Sequel, OpenTelemetry อย่างเต็มที่
- ออกจากการเขียน boilerplate การตั้งค่า และการตัดสินใจซ้ำซาก มุ่งเน้นไปที่ “ความสนุก” ของ Ruby และเทคโนโลยีฝั่งเบราว์เซอร์
ทำไมถึงเลือก Brut?
- แทนที่จะวนเวียนกับการตั้งค่าเดิม ๆ การถกเถียงเรื่องการออกแบบและโครงสร้างไม่รู้จบ และความยืดหยุ่นที่เกินความจำเป็นของ Rails และเฟรมเวิร์กเดิมอื่น ๆ เรามุ่งที่ความสนุกของตัวโค้ด
- ในฐานะเฟรมเวิร์กเว็บแอป Ruby ที่สร้าง พัฒนา และ deploy ได้อย่างรวดเร็ว เป้าหมายคือการมุ่งสู่ ประสิทธิภาพและความชัดเจน
การเริ่มต้นและแผนในอนาคต
- รองรับอิมเมจทางการของ Brut และการสร้าง/เรียกใช้งานแอปอย่างรวดเร็วผ่านคำสั่ง
- มีตัวอย่างแอปใช้งานจริงเช่น ADRs.cloud
- จะมีการอัปเดตเวอร์ชัน 1.0 และ road map อย่างต่อเนื่อง
ยังไม่มีความคิดเห็น