Rails 8 beta แรกได้รับการปล่อยอย่างเป็นทางการ นำชุดฟีเจอร์ การแก้ไขบั๊ก และการปรับปรุงที่น่าตื่นเต้นมาด้วย เวอร์ชันนี้สร้างบนพื้นฐานของ Rails 7.2 ในขณะที่นำเสนอฟีเจอร์ใหม่และการเพิ่มประสิทธิภาพ เพื่อให้การพัฒนา Rails มีประสิทธิภาพและเพลิดเพลินมากขึ้น
จุดเด่นหลักรวมถึงการบูรณาการกับ Kamal 2 สำหรับการ deploy ที่ไม่ต้องยุ่งยาก การนำเสนอ Propshaft เป็น asset pipeline ใหม่ค่าเริ่มต้น และการปรับปรุง ActiveRecord อย่างกว้างขวาง Rails 8 ยังนำการปรับปรุงการบูรณาการ SQLite หลายอย่างที่ทำให้มันเป็นตัวเลือกที่เป็นไปได้สำหรับ production use
มาเจาะลึกและสำรวจทุกสิ่งที่ Rails 8 มีให้!
การ Deploy ที่ไร้ความยุ่งยากด้วย Kamal 2 และ Thruster
Rails 8 ทำให้การ deploy แอปพลิเคชันของคุณง่ายด้วย Kamal 2 และ Thruster
Kamal 2 ลดความจำเป็นในการพึ่งพา managed cloud services และ Platform as a Service (PaaS) platforms โดยเปิดให้ deploy ได้อย่างรวดเร็วและง่ายไปยัง cloud VMs, bare metal servers, หรือ VPS environments ในเพียงไม่กี่นาที
ด้วยคำสั่งเดียว (kamal setup) คุณสามารถตั้งค่าสภาพแวดล้อม production-ready Rails บน Linux box มาตรฐาน ทำให้การ deploy ทั้งง่ายและคุ้มค่า
Kamal 2 ยังบูรณาการกับ Thruster โปร็กซีที่สร้างขึ้นเฉพาะสำหรับ Rails ที่เปิดใช้งาน zero-downtime deployments, HTTP/2 support, automated SSL ด้วย Let's Encrypt, Gzip compression และการ host หลายแอปบนเซิร์ฟเวอร์เดียว — ทั้งหมดโดยไม่ต้องการ setup ที่ซับซ้อน
กับ Kamal 2 และ Thruster Rails 8 ทำให้การ deploy แอปง่ายกว่าคนไหนก็ตาม และหากคุณชอบการ deploy setup อื่น คุณสามารถ opt out ได้โดยใช้ flag --skip-kamal เพื่อรักษา workflows ที่มีอยู่
Rails Deployments ที่ Lean กว่า ด้วย Solid Adapters
หนึ่งในการปรับปรุงใหญ่ใน Rails 8 คือการ deploy ที่ง่ายขึ้นโดยการลดจำนวน additional services ที่จำเป็นในการนำ common web application requirements ไปใช้
แบบดั้งเดิม หากคุณต้องการคุณสมบัติอย่าง job queues, caching, และ pub/sub messaging คุณจะใช้การผสมผสานของ database อย่าง PostgreSQL กับ Redis สำหรับ auxiliary functions
กับ Rails 8 คุณสามารถจัดการทั้งหมดนี้ได้ด้วยแค่ SQLite ขอบคุณสาม database-backed adapters ใหม่: Solid Cable, Solid Cache, และ Solid Queue
-
Solid Cable เป็น Rails' ใหม่ default Action Cable adapter ใน production และหมายความว่าคุณสามารถ drop dependency ทั่วไปบน Redis ได้ มันทำหน้าที่เป็น pub/sub server ส่งต่อข้อความระหว่างแอปและ clients ที่เชื่อมต่อ โดยใช้ fast polling ผ่าน SQLite 儘管 polling Solid Cable's performance เหมือนกับ Redis ในส่วนใหญ่ของสถานการณ์
-
Solid Cache แทนที่ความจำเป็นของ Redis โดยใช้ disk storage แทน RAM สำหรับ caching วิธีนี้อนุญาตให้ caches ใหญ่กว่า มีต้นทุนต่ำกว่า คงอยู่ได้นานกว่า และจัดการ requests มากกว่า โดยไม่เสียประสิทธิภาพ มันยังรองรับ encrypted storage และ retention policies เพื่อตอบสนองความต้องการด้านความเป็นส่วนตัว
-
Solid Queue แทนที่ Redis สำหรับ Active Job background processing โดยใช้ mechanism
FOR UPDATE SKIP LOCKEDสำหรับการจัดการ job ที่มีประสิทธิภาพ (เข้ากันได้กับ PostgreSQL, MySQL, หรือ SQLite) มันรวมคุณสมบัติสำคัญอย่าง concurrency control, retries, และ recurring jobs และพิสูจน์ตัวเองที่ HEY ที่มันจัดการ 20 ล้าน jobs ต่อวัน
Adapters ทั้งสามนี้ถูกออกแบบรอบแนวคิดง่ายๆ: SSDs และ NVMe drives สมัยใหม่เร็วพอที่จะจัดการหลายงานที่ก่อนหน้านี้ต้องการ in-memory solutions โดยการ tap เข้าไปใน drives ที่เร็วนี้ Rails ตัดความจำเป็นใน separate RAM-based tools เช่น Redis ออกไป
SQLite พร้อมสำหรับ Production
Rails 8 นำ SQLite จาก lightweight development tool สู่ตัวเลือกที่น่าเชื่อถือสำหรับ production use ขอบคุณการทำงานอย่างกว้างขวางบน SQLite adapter และ Ruby driver
ด้วยการนำเสนอ solid adapters ที่อภิปรายข้างต้น SQLite ตอนนี้มีความสามารถในการขับเคลื่อน Action Cable, Rails.cache, และ Active Job อย่างมีประสิทธิภาพ ขยายบทบาทของมันเกินแค่ prototyping หรือ testing environments
นี่คือการปรับปรุงหลักบางอย่างของ SQLite integration ใน Rails 8:
- Full-text search และ virtual tables ตอนนี้รองรับแล้วโดยใช้
create_virtual_table - Adapter ตอนนี้อนุญาต bulk insert fixtures สำหรับ enhanced data seeding performance
- Transactions default เป็นโหมด
IMMEDIATEเพื่อปรับปรุง concurrency - Enhanced error handling โดยแปลง
SQLite3::BusyExceptionเป็นActiveRecord::StatementTimeout
ยุคใหม่สำหรับ Asset Pipeline ด้วย Propshaft
Rails 8 ยังนำเสนอ Propshaft เป็น asset pipeline default ใหม่ แทนที่ระบบ Sprockets ที่ยาวนาน Sprockets บริการนักพัฒนา Rails ได้ดีมากกว่าทศกาล แต่มันถูกออกแบบในยุคที่ต่างออกไป — ก่อนการระเบิดของ JavaScript build tools และการปรับปรุง browser สมัยใหม่
Propshaft สะท้อนแนวทางที่เรียบง่ายและทันสมัยต่อการจัดการ assets สร้างรอบความต้องการหลักของนักพัฒนาวันนี้ วัตถุประสงค์ของมันตรงไปตรงมา: เพื่อให้ clear path สำหรับ assets และ apply digest stamps สำหรับ caching
ไม่เหมือน Sprockets ที่รับมืองานเพิ่มเติมมากมาย Propshaft โฟกัสเฉพาะสิ่งที่จำเป็น จึงเข้ากับปรัชญา Rails ใหม่ที่เก็บ asset pipelines ให้ lean (ในขณะที่ complex JavaScript handling ถูกทิ้งไว้ให้ specialized tools อย่าง Esbuild หรือ Vite)
Built-In Authentication ที่เรียบง่าย
Rails ได้สร้าง key components ของ authentication มาหลายปี จาก has_secure_password ใน Rails 5 ไปจนถึง normalizes, generates_token_for และ authenticate_by ใน Rails 7.1
กับ Rails 8 ทุก components นี้มารวมกันเพื่อให้คุณได้ starting point ที่ตรงไปตรงมาสำหรับการสร้างระบบ authentication แบบ session-based ที่ปลอดภัย
โดยการรันคำสั่งเดียว คุณสามารถตั้งค่าทุก essentials สำหรับระบบ authentication พร้อม database-backed sessions และ password reset functionality:
คำสั่งนี้สร้างไฟล์สำคัญ รวมถึง models, controllers, mailers, และ views:
สิ่งนี้วางคุณบน fast track สู่ authentication ที่ปลอดภัย production-ready ทั้งที่เหลือคือการ integrate user sign-up flow ที่ปรับแต่งตามความต้องการของแอปพลิเคชันของคุณ
Script Folder และ Generator ใหม่
Rails 8 นำเสนอ script folder ใหม่ ที่ dedicated สำหรับเก็บ one-off หรือ general-purpose scripts เช่น data migrations, cleanup tasks, หรือ utility operations อื่นๆ การเพิ่มเติมนี้ช่วยจัดระเบียบ scripts เหล่านี้อย่างสะอาด แยกพวกมันจาก main application logic ของคุณ
เพื่อให้การสร้าง script ง่ายขึ้น script generator ใหม่พร้อมใช้งาน คุณสามารถสร้าง scripts ด้วยคำสั่งง่ายๆ:
คำสั่งเหล่านี้สร้าง script files ที่สอดคล้องกัน ซึ่งคุณสามารถ execute ได้ด้วย:
แนวทางที่ streamlined นี้เก็บแอปพลิเคชันของคุณ organized และทำให้การจัดการ custom scripts สะดวกและ maintainable มากขึ้น
Active Record Improvements จำนวนมาก
Active Record ยังเห็นการปรับปรุง主要在 Rails 8 เพื่อปรับปรุงประสิทธิภาพ ลดความซับซ้อนของ migrations ปรับปรุง troubleshooting และให้การรองรับที่ดีขึ้นสำหรับ complex database use cases
ด้านล่างคือการเปลี่ยนแปลงหลักบางอย่างที่นำเสนอในเวอร์ชันล่าสุดนี้:
- Rails 8 ตอนนี้แยกแยะระหว่าง
float4และfloat8ใน PostgreSQL drop_tableตอนนี้รองรับการ drop multiple tables พร้อมกัน- รองรับ advanced options เมื่อสร้างตารางกับ PostgreSQL รวมถึง inheritance และ partitioning
- Bulk inserts of fixtures ตอนนี้รองรับเพื่อปรับปรุง data seeding performance
- Migrating fresh database ตอนนี้เริ่มด้วยการ load database schema ก่อนรัน migrations
create_schemaและdrop_schemaoperations ตอนนี้ reversible แล้ว- Rails 8 ตอนนี้ต้องการ MySQL 5.6.4 หรือใหม่กว่า เนื่องจากการก้าวหน้าอย่าง datetime with precision
- Query log tags เปิดใช้งานโดย default ใน development environments เพื่อ trace SQL statements กลับไปยัง application code และระบุว่าฐานข้อมูลไหนกำลังใช้งาน
สรุป
Rails 8 นำเสนอการอัปเดตที่มีผลกระทบตั้งแต่ easier deployments ด้วย Kamal และ modern asset pipeline ไปจนถึง ActiveRecord enhancements ที่สำคัญ และ improved production capabilities สำหรับ SQLite
การก้าวหน้าเหล่านี้ไม่เพียงเพิ่ม developer productivity แต่ยังสอดคล้องกับ modern best practices อนุญาตให้คุณโฟกัสที่การสร้างแอปพลิเคชันของคุณ แทนที่จะจัดการกับ infrastructure complexities
สำหรับรายละเอียดครบถ้วนของฟีเจอร์ใหม่ การเพิ่มประสิทธิภาพ และการเปลี่ยนแปลงทั้งหมด โปรดดู official Rails 8 release notes
หากคุณอยากมีส่วนร่วมกับการ contribute ให้ Rails เยี่ยมชม Rails GitHub repository เพื่อสำรวจ open issues และ review contribution guidelines
ขอบคุณที่อ่าน!
P.S. หากคุณอยากอ่าน Ruby Magic posts ทันทีที่พวกเขาออก ให้ subscribe Ruby Magic newsletter ของเรา และไม่เคยพลาดโพสต์เดี่ยว!
Damilola Olatunji
Damilola เป็น freelance technical writer และ software developer ที่ตั้งอยู่ใน Lagos, Nigeria เขาเฉพาะทางใน JavaScript และ Node.js และมุ่งมั่นส่งมอบบทความที่กระชับและปฏิบัติได้สำหรับนักพัฒนา เมื่อไม่ได้เขียนหรือเขียนโค้ด เขาชอบอ่าน เล่นเกม และเดินทาง
บทความทั้งหมดโดย Damilola Olatunji