• สำหรับระบบนิเวศของ 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 อย่างต่อเนื่อง

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น