2 คะแนน โดย GN⁺ 2026-03-13 | 4 ความคิดเห็น | แชร์ทาง WhatsApp
  • ระหว่างสร้าง แอปจัดการ setlist ของวง (setlist.rocks) ได้ค้นพบความสนุกของการพัฒนา Ruby on Rails อีกครั้งหลังจากห่างหายไปนาน
  • Rails 8 รุ่นล่าสุดยังคงโครงสร้าง MVC แบบดั้งเดิมไว้ แต่ก็ได้รับการปรับให้ทันสมัยด้วยฟรอนต์เอนด์แบบ “no-build” ที่อิงกับ Hotwire (Stimulus·Turbo) รวมถึง Solid Cache/Queue/Cable
  • SQLite ถูกปรับแต่งจนเหมาะกับการใช้งานจริงได้เพียงแค่ตั้งค่าพื้นฐาน และเครื่องมือดีพลอย Kamal ก็ทำให้การ ดีพลอยแบบไม่มี Downtime บนคอนเทนเนอร์ง่ายขึ้น
  • ด้วยปรัชญา “Convention over Configuration” ของ Rails และ ecosystem ของ gem ที่อุดมสมบูรณ์ ทำให้สามารถพัฒนาได้อย่างรวดเร็วตั้งแต่ไอเดียไปจนถึงต้นแบบ
  • แม้ความนิยมของ Ruby และ Rails จะลดลงจากเมื่อก่อน แต่ก็ยังคงมอบความสนุกในการพัฒนาในฐานะ เฟรมเวิร์ก OSS ที่เติบโตเต็มที่และมีความสม่ำเสมอ

โปรเจกต์ข้างเคียงและการหวนกลับสู่ Rails

  • เพื่อจัดการ setlist และโน้ตเพลงของวง ผู้เขียนจึง พัฒนาเว็บแอปขึ้นมาเอง โดยมองหาวิธีที่มีประสิทธิภาพกว่าสเปรดชีตหรือแชตแบบเดิม
  • ระหว่างพัฒนาได้สัมผัสอีกครั้งถึง ความเรียบง่ายและประสิทธิภาพในการทำงานของ Rails และกล่าวว่ามันให้ “ความสนุกของการพัฒนาแบบบริสุทธิ์” เมื่อเทียบกับ ecosystem เว็บยุคปัจจุบันที่ซับซ้อน
  • Ruby ยังถูกมองว่าเป็นภาษาที่มี ไวยากรณ์เป็นธรรมชาติและสื่อความหมายได้ดี ทำให้นำความคิดมาแปลงเป็นโค้ดได้ง่าย
  • จากผลสำรวจของ Stack Overflow ปี 2025 แม้ความนิยมของ Ruby และ Rails จะลดลง แต่ก็ยังเป็นตัวเลือกที่ชื่นชอบสำหรับโปรเจกต์ส่วนตัว

การเปลี่ยนแปลงของ Rails 8 และฟรอนต์เอนด์

  • Rails 8 ยังคงโครงสร้าง MVC เดิมไว้ พร้อมทั้งมีการผสานฟรอนต์เอนด์ที่อิงกับ Hotwire (Stimulus·Turbo)
    • Turbo ดักจับการคลิกลิงก์และการส่งฟอร์ม เพื่อมอบ ความตอบสนองระดับ SPA
    • Stimulus เพิ่มพฤติกรรม JS เฉพาะส่วนที่จำเป็น ทำให้สร้าง UI แบบโต้ตอบได้ด้วย การเขียน JavaScript ให้น้อยที่สุด
  • การนำ Importmap มาใช้ทำให้สามารถโหลดไลบรารี JS จาก CDN ได้โดยตรงโดยไม่ต้องใช้ Webpack หรือ npm
  • แม้จะใช้เครื่องมือ AI เพื่อสร้าง UI แต่ผู้เขียนก็เผยให้เห็นความกังวลระหว่าง การสร้างสรรค์ กับ ความเป็นศิลปะของโค้ด

เวิร์กโฟลว์การพัฒนาและประสิทธิภาพ

  • ด้วยปรัชญา “Convention over Configuration” ของ Rails ทำให้สามารถจัดวาง model, routing, controller และ view ได้อย่างรวดเร็ว
    • ยกตัวอย่างการสร้างโมเดล Tag, การทำ RESTful routing แบบอัตโนมัติ และกระบวนการจัดการการตอบกลับแบบ JSON
  • เทมเพลต ERB และ live reload ช่วยให้ทำต้นแบบได้อย่างรวดเร็ว
  • ด้วย ecosystem ของ gem ที่หลากหลาย จึงสามารถผสานฟีเจอร์ต่าง ๆ เช่น CSV, PDF ได้อย่างง่ายดาย

การปรับปรุงฝั่งแบ็กเอนด์: ชุด Solid* และ SQLite

  • Solid Cache/Queue/Cable ถูกรวมมาเป็นค่าเริ่มต้นใน Rails 8 ทำให้สามารถจัดการแคช, job queue และ WebSocket ได้โดยไม่ต้องใช้ Redis
    • Solid Cache เป็นการแคชบนฐานข้อมูล ช่วยประหยัด RAM และลดความซับซ้อน
    • Solid Queue จัดการงานเบื้องหลังบนฐานข้อมูล และสามารถรันได้เพียงตั้งค่า SOLID_QUEUE_IN_PUMA=1
    • Solid Cable เป็น Action Cable adapter บนฐานข้อมูลสำหรับรองรับฟีเจอร์แบบเรียลไทม์
  • SQLite ใช้การปรับแต่งอย่าง โหมด WAL, การซิงก์แบบ NORMAL ผ่านการตั้งค่า pragmas: ใน database.yml เป็นค่าเริ่มต้น
    • จึงสามารถ ใช้งานได้จริงในโปรดักชันขนาดเล็ก โดยไม่ต้องมี DB server แยกต่างหาก

การทำดีพลอยอัตโนมัติและ Kamal

  • ผู้เขียนกล่าวถึงความซับซ้อนของการดีพลอยในอดีตที่อิงกับ Capistrano·Ansible และแนะนำ Kamal ในฐานะเครื่องมือดีพลอยเริ่มต้นของ Rails 8
    • ทำกระบวนการตั้งแต่ build container → push → ดีพลอยขึ้นเซิร์ฟเวอร์ → health check → สลับใช้งานแบบไม่มี Downtime ได้โดยอัตโนมัติ
    • kamal-proxy รับหน้าที่สลับทราฟฟิกและจัดการ SSL
    • รองรับการจัดการ secret อย่างปลอดภัย ผ่านไฟล์ .kamal/secrets ที่อิงกับตัวแปรสภาพแวดล้อม
  • เมื่อต่อกับ GitLab CI ก็สามารถดีพลอยได้ด้วยแค่ git push ซึ่งให้ความเรียบง่ายแบบเดียวกับ Heroku ในอดีต

การยืนยันตัวตนและฟีเจอร์อื่น ๆ

  • Rails 8 มี ตัวสร้างระบบยืนยันตัวตนในตัว (auth generator) ทำให้สร้างระบบล็อกอินที่เรียบง่ายกว่า Devise ได้
  • แม้ Devise จะยังมีประโยชน์จากฟีเจอร์และเอกสารที่ครบถ้วน แต่ ความเรียบง่ายของระบบยืนยันตัวตนพื้นฐานของ Rails ก็ถูกมองว่าน่าสนใจ

สถานะปัจจุบันและความต่อเนื่องของ ecosystem Rails

  • แม้ความนิยมของ Ruby และ Rails จะลดลง แต่บริการใหญ่ ๆ อย่าง Shopify·Basecamp·SoundCloud·GitHub ก็ยังใช้งานอยู่
  • gem จำนวนมากอยู่ในช่วงบำรุงรักษา แต่ Rails ยังคงรักษา รอบการออกรุ่นอย่างสม่ำเสมอทุกปี
  • ผู้เขียนประเมินว่าเป็น “เฟรมเวิร์กที่นักพัฒนาหน้าใหม่อาจหลั่งไหลเข้าน้อยลง แต่ก็ยังพัฒนาได้อย่างสนุก”

บทสรุป

  • แม้ Rails จะห่างจากเทรนด์ล่าสุด แต่ก็ถูกเน้นย้ำว่าเป็นเครื่องมือที่ช่วยนำ ความสนุกและความเรียบง่ายของการพัฒนา กลับคืนมา
  • มากกว่าความนิยม ผู้เขียนให้ความสำคัญกับ ความสนุกในการสร้างและความคิดสร้างสรรค์ และปิดท้ายด้วยข้อความว่า “ลองกลับไปใช้ Rails อีกครั้งสักครั้ง”

4 ความคิดเห็น

 
joyfui 2026-03-14

ถ้าเป็น Rails ผมจำได้ว่าน่าจะเป็น "ธรรมเนียมมาก่อนการตั้งค่า" ไม่ใช่ "การตั้งค่ามาก่อนธรรมเนียม"...

 
savvykang 2026-03-14

> ดูเหมือนว่า LLM จะส่งออกตามลำดับอินพุตเดิมโดยไม่เปลี่ยนลำดับคำ ในต้นฉบับเขียนไว้ถูกต้องแล้ว

 
xguru 2026-03-14

LLM ก็พลาดเรื่องแบบนี้เหมือนกันนะครับ ผมแก้ไขไว้แล้ว ขอบคุณครับ

 
GN⁺ 2026-03-13
ความคิดเห็นจาก Hacker News
  • ฉันชอบ Rails มากจริงๆ แต่หลังจากได้ทำงานกับ โค้ดเบสขนาดใหญ่ที่ไม่มี static type แล้ว ก็รู้สึกว่ายากจะกลับไปใช้ Rails นอกเหนือจากโปรเจกต์ส่วนตัว
    โค้ดเบสขนาดใหญ่ที่ไม่มี type นั้นเป็นฝันร้ายในการดูแลรักษา แม้จะมี IDE ทรงพลังอย่าง RubyMine ก็ตาม
    ทุกวันนี้อยากรู้ว่า Sorbet พัฒนาไปไกลแค่ไหนแล้ว โดยเฉพาะการทำงานร่วมกับ RoR

    • ช่วงนี้ฉันคิดว่า Rust/Loco คือเฟรมเวิร์กที่น่าสนใจที่สุด
      มันยึดตามปรัชญาของ Rails ได้ดี และยังทำให้การเรียนรู้ Rust ง่ายขึ้นด้วย
    • IHP คือเฟรมเวิร์กสาย Haskell ที่ได้แรงบันดาลใจจาก Rails และพยายามผสานข้อดีของทั้งสองโลกเข้าด้วยกัน
      น่าลองเล่นในช่วงสุดสัปดาห์
    • ปัญหาไม่ได้มีแค่การไม่มี type แต่ยังรวมถึงโครงสร้างที่นิยามฟังก์ชันหรือพร็อพเพอร์ตีตอน runtime ทำให้แทบจะดีบักไม่ได้เลย
      ต้องคัดลอกข้อมูล production จริงมาลงเครื่อง local หรือ SSH เข้าเซิร์ฟเวอร์เพื่อเปิด REPL ดูสถานะเอา
      การดีบักใน IDE เป็นประสบการณ์ที่ เหมือนตกนรก
      ฉันรัก Ruby มากจริงๆ แต่หลังจากเจอกับการดีบักแบบเรียลไทม์แล้วก็ลำบากใจ
    • สงสัยว่าทำไมโค้ดเบสขนาดใหญ่ที่ไม่มี static type ถึงได้เป็นฝันร้ายขนาดนั้น
    • ช่วงนี้ด้วย agentic coding ความสำคัญของภาษาและเฟรมเวิร์กก็ค่อยๆ ลดลง
      ตอนนี้ไม่มีเหตุผลอะไรที่ต้องเลือก Ruby หรือ Python เป็นพิเศษแล้ว
      Python คงอยู่ต่อได้อีกพักในสาย ML แต่สุดท้ายก็น่าจะหายไป
  • ฉันก็ดีใจที่มีคนพูดความคิดแบบนี้ออกมาอย่างเปิดเผย
    ช่วงนี้เริ่มเหนื่อยกับ สถาปัตยกรรมไมโครเซอร์วิส ที่มากเกินไป
    ตอนเย็นเลยหันไปทำโปรเจกต์ที่แก้ปัญหาแบบตรงไปตรงมาโดยไม่มีโครงสร้างเกินจำเป็น
    เมื่อก่อนฉันทำงานกับโครงสร้าง PHP เยอะ แต่ไม่ว่า Rails หรือ PHP สุดท้ายก็เป็นแค่ เครื่องมือแก้ปัญหา

    • ตั้งแต่ต้นปีนี้ฉันใช้ RoR กับโปรเจกต์ใหม่ และมันเป็นประสบการณ์ที่ สดชื่นเหมือนได้อากาศบริสุทธิ์ จริงๆ
      ให้ความรู้สึกเหมือนการพัฒนาแบบ desktop IDE สมัยก่อน ที่ทุกอย่างทำงานอยู่ “ในกล่อง” เดียวกัน
      เหมือนได้กลับคืนสู่ ความเรียบง่ายที่เน้น productivity หลังจากหลุดพ้นจากการต้องจัดการองค์ประกอบซับซ้อนของงานเว็บ
      แถมยังไม่ต้องใช้ TypeScript ด้วย ซึ่งดีมาก เพราะฉันมองว่า TypeScript เป็นกอง boilerplate ที่เยิ่นเย้อและไม่จำเป็น
    • สงสัยว่า STOA หมายถึงอะไร
    • รู้สึกว่าคำว่า “การแปลระหว่างความคิดกับโค้ดมีน้อยที่สุด” สื่อแก่นของ Ruby ได้ดีมาก
  • เรารันแอป Rails ใน production มาต่อเนื่องตั้งแต่ปี 2007
    เคล็ดลับที่ทำให้ Rails อยู่ยาว ไม่ใช่เรื่องอายุ แต่เป็นความเสถียรและความใช้การได้จริง
    ข้ออ้างว่าการใช้ JavaScript ที่ฝั่งแบ็กเอนด์จะทำให้มีประสิทธิภาพมากขึ้นนั้นถูกหักล้างไปแล้ว
    การเปลี่ยน tech stack ส่วนใหญ่เกิดจาก การแต่งเรซูเม่ให้ดูดี หรือ ความกังวลตามกระแส มากกว่าความต้องการทางวิศวกรรมจริงๆ
    Rails ขับเคลื่อนธุรกิจจริงมาอย่างเงียบๆ ตลอด
    คงไม่มีใครคิดว่าแพ็กเกจ 3.1 ล้านตัวใน NPM ให้ความสามารถมากกว่า 190,000 ตัวใน RubyGems แบบตรงๆ หรอก

    • พวกเราก็ใช้ Rails ใน production ที่สองบริษัทมาตั้งแต่ปี 2011
      ตอนนี้กำลัง migrate ไปใช้ Inertia + Vue.js ซึ่งเป็นคู่ผสมที่ทรงพลังมากจนแทบไม่ต้องเปลี่ยนฝั่งแบ็กเอนด์เลย
      productivity ที่เพิ่มขึ้นช่วยชดเชยความยากในการจ้างคนได้ด้วย
    • จำนวนแพ็กเกจใน NPM ที่มากกว่า หมายความว่ามีผู้ใช้มากกว่า
      ยิ่งผู้ใช้มาก ecosystem ก็ยิ่งแข็งแรง
      แต่ใน RubyGems ก็มีแพ็กเกจเก่าๆ อยู่มากเหมือนกัน เลยคิดว่าเทียบกันตรงๆ ได้ยาก
  • ปรัชญาแบบ “แถมแบตเตอรี่มาครบ” ของ RoR หรือ Django นั้นดี แต่การดูแลโปรเจกต์เก่าใช้เวลามาก
    ถ้าจะอัปเดตโปรเจกต์ที่มีอายุ 5~6 ปี การจัดการ dependencies คือภาระใหญ่
    เพราะงั้นช่วงนี้ฉันเลยชอบใช้เฟรมเวิร์กเรียบๆ หรือไม่ใช้เฟรมเวิร์กไปเลยกับ Go มากกว่า

    • ฉันดูแลโค้ดเบส Django ที่มีมากกว่า 300,000 บรรทัดอยู่ และมี dependency ตรงเพียง 32 ตัวเท่านั้น
      ถ้าใช้เฉพาะไลบรารีที่จำเป็นจริงๆ การดูแลก็ง่าย
    • ปัญหาน่าจะเป็นเรื่อง การเปลี่ยนแปลงต่อเนื่อง (churn)
      นอกจากแพตช์ความปลอดภัยแล้ว ก็สงสัยว่ามีเหตุผลอะไรที่ต้องอัปเดตบ่อยขนาดนั้น
    • ใน Laravel แทบไม่เจอปัญหาแบบนี้เลย
      ตลอดปีครึ่งที่ผ่านมา ฉันอัปขึ้นเมเจอร์เวอร์ชันไป 5 ครั้ง แต่ก็ยังค่อนข้างง่าย
    • สุดท้ายแล้วความยากง่ายในการดูแลรักษาขึ้นอยู่กับ กลยุทธ์การจัดการ dependencies
      ถ้าวางให้รอบคอบตั้งแต่แรก ก็แทบไม่ต้องแตะอะไรไปอีกนาน
    • สงสัยว่าแนวคิด “แถมแบตเตอรี่มาครบ” กลับทำให้การอัปเกรดยากขึ้นหรือเปล่า ฉันรู้สึกว่าน่าจะตรงกันข้าม
  • คิดว่า ประสบการณ์การอัปเกรด เป็นเรื่องที่คนประเมินต่ำไป
    Next.js เปลี่ยนโครงสร้างแทบหมดทุกครั้งที่ขึ้นเมเจอร์เวอร์ชัน แต่ Rails มีรอบการเลิกใช้แบบค่อยเป็นค่อยไป (deprecation) ที่ช้ากว่า เลยเสถียรกว่ามาก
    เวลาเราต้องส่งมอบผลิตภัณฑ์อย่างต่อเนื่อง เสถียรภาพของอินเทอร์เฟซ สำคัญกว่าพาราไดม์ใหม่ล่าสุดมาก

    • มีแต่คนที่รัน Rails มานานจริงๆ เท่านั้นที่จะเข้าใจจุดนี้อย่างแท้จริง
      การย้ายจาก pages ไป app router ของ Next.js นั้นแทบจะเป็น การย้ายแพลตฟอร์มใหม่ทั้งระบบ
      ในทางกลับกัน Rails มีเส้นทางอัปเกรดที่มีเอกสารชัดเจนและรอบ deprecation ที่คาดเดาได้
      การจัดการเวอร์ชัน Ruby ก็แทบหมดปัญหาเรื่อง environment ไม่ตรงกันด้วย rbenv/asdf
    • การเปลี่ยนไปใช้ app router ของ Next เป็นการเปลี่ยนเชิงโครงสร้างครั้งใหญ่ ดังนั้นตอนนี้ก็น่าสนใจที่จะมองหาทางเลือกที่มีความเห็นชี้นำต่ำกว่าอย่าง TanStack Start
  • ฉันทำ Rails มามากกว่าสิบปี ตั้งแต่ DevOps ไปจนถึงเว็บเดฟสายลุยเดี่ยว และถ้าต้องเลือกใหม่ก็จะเลือกเหมือนเดิม
    Rails คือ เฟรมเวิร์กที่ครบถ้วน สะอาด และมี productivity สูง
    ในแบบสำรวจของ Stack Overflow มันก็ยังติด “Top 5 สแตกที่อยากใช้ในโปรเจกต์ถัดไป” อยู่

    • ความเป็น “เฟรมเวิร์กสำหรับคนคนเดียว” ของ Rails มีเสน่ห์มากจริงๆ
      แทบไม่ต้องกังวลเรื่องการตั้งค่าอินฟราหรือการ deploy เลย
    • คนที่ทำงานกับ Rails จริงๆ อาจไม่ได้รู้สึกว่าต้องไปตอบแบบสำรวจด้วยซ้ำ
      สุดท้ายสิ่งสำคัญไม่ใช่สายตาคนอื่น แต่คือ การใช้เครื่องมือที่เหมาะกับตัวเอง
    • Rails เปิดตัวในปี 2004 ตอนนี้จึงเป็น เฟรมเวิร์กที่มีอายุมากกว่า 20 ปี แล้ว
      ออกมาก่อน Django อยู่ 1 ปี
    • ในแบบสำรวจ Stack Overflow ปี 2025 Rails อยู่ที่อันดับ 10 ในหมวด “Admired vs Desired” ของเว็บเฟรมเวิร์ก
      ลิงก์แบบสำรวจ
  • เมื่อก่อนฉันคิดว่า Ruby/Rails คือ คำตอบที่ดีที่สุด สำหรับปัญหาส่วนใหญ่ และตอนนี้ก็ยังคิดแบบนั้นอยู่

  • ฉันไม่เคยใช้ Rails แต่เข้าใจความรู้สึกกับ ความวุ่นวายของสภาพแวดล้อมการพัฒนาเว็บ ในทุกวันนี้
    เพราะแบบนั้นฉันเลยมองไปข้างหน้าแล้วเลือก Elixir และ Phoenix

    • ในช่วงไม่กี่วันที่ผ่านมา พอบอกว่ากำลังทำโปรเจกต์ด้วย Ruby ก็มีคนแนะนำ Elixir ถึงห้าคน
      โปรเจกต์หน้าฉันตั้งใจว่าจะต้องลองแน่นอน
      อยากรู้ว่าอะไรใน Elixir ที่ทำให้มันน่าดึงดูดขนาดนั้น และสำหรับคนเริ่มต้นควรโฟกัสตรงไหน
  • เมื่อ 10 ปีก่อน เราสร้างฟรอนต์เอนด์สตรีมมิงของสถานีโทรทัศน์ใหญ่ในสวีเดนด้วย Rails
    บน Heroku มันรองรับ ผู้ใช้พร้อมกันมากกว่า 1 ล้านคน ได้ และทำงานได้ดีมาก
    หลังจากนั้นฉันย้ายไปทำเรื่องโครงสร้างพื้นฐานสตรีมมิง, API, AI/ML และอย่างอื่นต่อ แต่ไม่ใช่เพราะ Rails ล้มเหลว ทว่าเป็นเพราะ ลักษณะของปัญหาเปลี่ยนไป
    Rails เหมาะกับปัญหาที่มีโมเดลข้อมูลและตรรกะทางธุรกิจเป็นศูนย์กลาง ส่วนปัญหาที่เน้น concurrency หรือ infrastructure ภาษาอื่นจะเหมาะกว่า
    Ruby ยังเป็น ภาษาที่สวยงามและสื่อความหมายได้ดี จนยังคิดถึงอยู่มาก

    • ฉันก็เห็นด้วยกับแนวคิดที่ว่า “เลือกเครื่องมือให้เหมาะกับปัญหา”
      แต่ก็รู้สึกว่ายากจะตัด อคติส่วนตัว ต่อภาษาที่ชอบออกไปได้ทั้งหมด
      เลยสงสัยว่าคุณทำโปรเจกต์ถัดไปด้วยภาษาอะไร
  • สำหรับคนที่เสียดายเรื่องการไม่มี static type ก็มีโซลูชันดีๆ อย่าง Sorbet
    คุณจะได้ทั้ง productivity ของ Ruby, static type และการผสานกับ LSP ไปพร้อมกัน
    ด้วยแรงสนับสนุนจาก Shopify ทำให้ Sorbet รองรับ Rails ได้ดีด้วย
    ฉันชอบ ecosystem นี้มากจนยังอยากทำงานกับ Rails ต่อไป
    ด้วย พัฒนาการของเครื่องมือ AI ทุกวันนี้ ฉันคิดว่าข้อจำกัดมีแค่ขอบเขตจินตนาการเท่านั้น

    • ตอนนี้ประเด็นร้อนที่สุดในสาย AI คือ OpenClaw
      ฉันสร้าง เอเจนต์อีคอมเมิร์ซ ที่ใช้มันเป็นฐานสำหรับมอนิเตอร์ร้านค้า 24 ชั่วโมงและแจ้งเตือนผ่าน Slack
      ถ้าจะทำโปรเจกต์เกี่ยวกับ AI ก็ควรลองดู selzee.com/openclaw