Ruby on Rails ออกเวอร์ชั่น 8.0 ชูฟีเจอร์สำคัญคือการรวมเอา Kamal 2 พรอกซี่สำหรับการ deploy โครงการอย่างรวดเร็ว ต้องการเพียง SSH key จากเซิร์ฟเวอร์เท่านั้น ขณะที่ฝั่งแอปพลิเคชั่นเองมีพรอกซี่ Thruster สำหรับการบีบอัดข้อมูลและแคชในตัว ทำให้โดยรวมไม่ต้องใช้ nginx เลย
ฝั่งข้อมูลในการทำงานนั้น Rails 8 ไม่ต้องการ Redis สำหรับ PubSub, Cahce และ Queue แล้ว โดยอาศัยโครงการ Solid ที่เป็น adapter ฐานข้อมูลหันมารองรับ SQLite ทั้งหมด โดยโครงการภายในของ 37signals เองก็ใช้ SQLite บน production หลายตัว เช่น Campfire และ Writebook
การอัพเกรดยังมีฟีเจอร์เล็กๆ น้อยๆ อีกจำนวนมาก ActiveModel มีฟีเจอร์ใหม่ๆ เช่น ขอยกเว้นเงื่อนไขการ validate ข้อมูล, เพิ่มระบบรีเซ็ตรหัสผ่านในตัว
Ruby on Rails เว็บเฟรมเวิร์คที่ได้รับความนิยมอย่างสูงในงานสาย startup เปิดตัวเวอร์ชัน 8.0.0 Beta 1 เป็นที่เรียบร้อยเมื่อวันที่ 27 กันยายน 2567 โดยมีสโลแกนใหม่ของการอัปเดตครั้งนี้ว่าเพื่อการ deploy แอป โดยไม่ต้องใช้ PaaS (Platform as a Service)
ใน Rails 8.0.0 Beta 1 มีฟีเจอร์สำคัญดังนี้:
Ruby on Rails เว็บเฟรมเวิร์คที่ได้รับความนิยมค่อนข้างสูงในงานสาย start up ขณะนี้ได้พัฒนามาถึงเวอร์ชั่น 7.1.2 ได้เผยแพร่ milestone สำหรับการอัพเกรดใหญ่เป็นเวอร์ชั่น 8.0.0 ผ่าน github ของโครงการ โดยมีรายละเอียดของ feature เพิ่มที่น่าสนใจดังนี้
ตามธรรมเนียมปฏิบัติของชุมชนนักพัฒนา Ruby ที่จะออก update ทุกวันคริสต์มาสของทุกปี คริสต์มาสปีนี้เวอร์ชัน Ruby 3.3.0 ก็ได้ถูกประกาศหลุดจากสถานะ Release Candidate (RC) เป็นพร้อมใช้งาน โดยในรอบปีที่ผ่านมา แนวทางการพัฒนาของ Ruby ยังมุ่งไปในทางเพื่อเพิ่ม performance เป็นหลัก ซึ่งในเวอร์ชัน 3.3.0 นี้เอง ก็ได้มีการเพิ่มและปรับปรุงที่น่าสนใจดังนี้
เมื่อวันที่ 25 ธันวาคม 2565 กลุ่มผู้พัฒนาได้ประกาศปล่อยภาษา Ruby เวอร์ชั่น 3.2.0 ตามธรรมเนียมของชุมชนผู้พัฒนาที่จะออกอัพเดตใหญ่ทุกวันคริสต์มาส
ไฮไลท์ของการอัพเดตครั้งนี้อยู่ที่การเริ่มรองรับการพอร์ตไป WebAssembly ผ่าน WebAssembly System Interface (WASI) ซึ่งจะทำให้โค้ดของ CRuby (ภาษา Ruby ที่ใช้ C เป็น interpreter) สามารถเรียกใช้งานได้บนเว็บเบราเซอร์หรือบนแพลตฟอร์มที่รองรับ WebAssembly และประกาศให้ YJIT ที่เป็น JIT(Just-In-Time) compiler ใหม่ให้อยู่ในสถานะพร้อมใช้บน production จากเดิมที่อยู่ในสถานะ experimental
บริษัทเอกชน 8 บริษัทที่ใช้งาน Ruby on Rails เป็นหลัก ได้แก่ Cookpad, Doximity, Fleetio, GitHub, Intercom, Procore, Shopify, และ 37signals ประกาศจัดตั้งมูลนิธิไม่แสวงผลกำไร The Rails Foundation โดยให้คำอธิบายไว้ว่ามูลนิธินี้จะมุ่งเน้นพัฒนาและปรับปรุงสภาพแวดล้อม (ecosystem) โดยรวมให้ดีขึ้นทั้งหมดและดึงดูดนักพัฒนารายใหม่ให้เข้ามาใช้มากขึ้น
มูลนิธิจะได้รับเงินทุนตั้งต้น (seed funding) 1,000,000 USD จากทั้ง 8 บริษัทและค่าบำรุงรายปีรวมกันปีล่ะ 400,000 USD ในปีถัดไปทุกปี มีตัวแทนแต่ล่ะบริษัทนั่งเป็นบอร์ดบริหาร และมี David Heinemeier Hansson ผู้สร้าง Ruby on Rails จาก 37signals เป็นประธานบอร์ด
ระบบจัดการแพ็กเกจซอฟต์แวร์ยอดนิยมหลายตัว เช่น NPM, PyPI เริ่มบังคับนักพัฒนาเจ้าของแพ็กเกจต้องยืนยันตัวตนแบบ MFA เพื่อป้องกันปัญหา supply chain attack นักพัฒนาโดนแฮ็กบัญชี แล้วถูกฝังมัลแวร์แพร่กระจายในวงกว้าง
RubyGems ระบบจัดการแพ็กเกจของภาษา Ruby เป็นรายล่าสุดที่เริ่มบังคับนักพัฒนาล็อกอินด้วย MFA แต่ยังจำกัดเฉพาะแพ็กเกจ (gems) ยอดนิยม 100 อันดับแรกเท่านั้น
ภาษา Ruby ออกเวอร์ชัน 3.1.0 ตามธรรมเนียมการออกรุ่นใหม่ทุกวันคริสต์มาส ของใหม่ที่สำคัญในเวอร์ชันนี้คือ JIT (just-in-time) compiler ตัวใหม่ที่เรียกว่า YJIT
ใน Ruby 3.0 มีการเพิ่ม JIT มาก่อนแล้ว โดยใช้ชื่อว่า MJIT และช่วยให้ Ruby 3.0 มีประสิทธิภาพเพิ่มขึ้นถึง 3 เท่าจาก Ruby 2.0
YJIT เป็นการพัฒนา JIT ไปอีกขั้น เป็นโครงการที่พัฒนาโดยบริษัท Shopify ที่ใช้ภาษา Ruby ภายในบริษัทอยู่แล้ว แนวคิดของมันคือใช้เทคนิคที่เรียกว่า Basic Block Versioning (BBV) ช่วยให้ประสิทธิภาพดีขึ้นจาก MJIT อีกราว 20-39% ขึ้นกับเบนช์มาร์คที่ใช้เปรียบเทียบ
Ruby on Rails ออกเวอร์ชันใหญ่ 7.0 ซึ่งมีการเปลี่ยนแปลงสำคัญ 2 เรื่องคือ ไม่ต้องผูกกับโลกของ Node.js อีกแล้ว และเปลี่ยนระบบ front-end มาเป็นตัวใหม่คือ Hotwire
David Heinemeier Hansson หรือ DHH ผู้สร้าง Rails อธิบายว่าโครงสร้างของภาษา JavaScript ในอดีตเป็นปัญหาของโปรแกรมเมอร์มาก ทางออกจึงเป็นการเขียนภาษาอื่นแล้วแปลงเป็น JavaScript (เรียกว่า transpiling เช่น CoffeeScript หรือ Babel) ที่ช่วยให้เขียนโค้ดง่ายขึ้น แต่ก็ต้องแลกมาด้วยความซับซ้อนที่เพิ่มขึ้น
Alex Birsan รายงานถึงการโจมตีองค์กรขนาดใหญ่จำนวนมากด้วยการสร้างแพ็กเกจไลบรารีเลียนแบบชื่อไลบรารีในองค์กรแล้วไปวางตามบริการดาวน์โหลดไลบรารีไม่ว่าจะเป็น RubyGems, npm, หรือ PyPI
องค์กรขนาดใหญ่จำนวนมากมักมีไลบรารีเฉพาะทางของตัวเองใช้งานภายในเป็นเรื่องปกติ และหลายครั้งชื่อไลบรารีเหล่านี้ก็หลุดออกมาสู่โลกภายนอก เช่น Paypal เคยทำไฟล์ package.json ที่ใช้ภายในหลุดออกมาอยู่บน GitHub ทำให้รู้ว่าบริษัทมีการใช้งานไลบรารีภายในเช่น pplogger, auth-paypal, wurfl-paypal, analytics-paypal เป็นต้น หรือแม้แต่แอปเปิลก็เคยทำรายชื่อแพ็กเกจเหล่านี้หลุดออกมาเช่นกัน
โครงการภาษาโปรแกรม Ruby ออกรุ่น 3.0 ตัวจริงตามที่ประกาศว่าจะออกวันคริสตมาส กลายเป็นจุดตัดของการอัพเกรดภาษาที่เข้ากับเวอร์ชั่น 2.x ไม่ได้อีกต่อไป
ทางโครงการระบุว่าเวอร์ชั่น 3.0.0 นี้มีเป้าหมาย 3 ประการ ได้แก่
Google Cloud Functions บริการประมวลผลแบบ serverless ของฝั่งกูเกิล (ที่เทียบได้กับ Amazon Lambda ของฝั่ง AWS) ประกาศรองรับรันไทม์อีก 2 ภาษาคือ .NET Core 3.1 และ Ruby
ประกาศนี้ทำให้ตอนนี้ Cloud Functions รองรับภาษาทั้งหมด 6 ภาษาคือ Java 11, Node.js (8/10/12), Python (3.7/3.8) และ Go
การเพิ่มจำนวนภาษาที่รองรับในรอบนี้ ทำให้ Cloud Functions ทัดเทียมกับคู่แข่ง Lambda ที่รองรับทั้งหมด 7 ภาษา (6 ภาษาแรกเหมือนกัน เพิ่ม PowerShell มาอีกหนึ่งภาษา) ในขณะที่ Azure Functions ของไมโครซอฟท์รองรับ .NET Core 3.1 (C#/F#), Node.js, Java, Python, PowerShell, TypeScript
Yukihiro Matsumoto ผู้สร้างภาษา Ruby ยืนยันว่าจะออก Ruby 3 ในวันที่ 25 ธันวาคมหรือวันคริสตมาสปีนี้ หลังจากก่อนหน้านี้มีกำหนดปล่อย Ruby 3 พร้อมกับการแข่งขันโอลิมปิกในโตเกียวแต่โอลิมปิกเลื่อนออกไป
GitHub รายงานถึงการอัพเกรด Ruby ที่ GitHub ใช้งานเป็นหลัก รวมโค้ดกว่า 400,000 บรรทัด โดยมีความเปลี่ยนแปลงสำคัญคือการแจ้งเตือนการยกเลิกรองรับ Hash แทน keyword argument ใน Ruby 3 แม้ว่าจะยังใช้งานได้ใน Ruby 2.7 ก็ตาม แต่ GitHub ยืนยันว่าจะใช้โค้ดแบบไม่มีคำเตือน deprecated ทำให้ต้องแก้ไขโค้ดจำนวนมาก
Ruby ออกเวอร์ชั่น 2.7.0 เมื่อวันคริสตมาสที่ผ่านมา โดยเพิ่มฟีเจอร์หลัก 4 รายการ ได้แก่
Google App Engine ประกาศรองรับภาษา Ruby ในสภาพแวดล้อมแบบ Standard Environment แล้ว หลังเปิดใช้งานแบบ Flexible Environment มาตั้งแต่ปี 2016 นับเป็นภาษาที่ 7 ของ Standard Environment
Standard Environment เป็นการรันแอพพลิเคชันใน sandbox ของกูเกิลเอง โดยใช้ได้เฉพาะภาษาและเวอร์ชันที่กูเกิลกำหนดให้เท่านั้น ข้อดีคือราคาถูกกว่า ขยายเครื่องได้เร็วกว่า ส่วน Flexible Environment เป็นการรันใน Docker/VM ที่ยืดหยุ่นกว่าในเรื่องภาษา แต่ราคาก็แพงกว่า (เปรียบเทียบความแตกต่าง)
สองวันก่อนมีรายงานถึงโครงการโมดูล rest-client ในที่เป็นไลบรารีภาษา Ruby ถูกเพิ่มโค้ดเข้ามาในเวอร์ชั่น 1.6.13 และเป็นโค้ดมุ่งร้าย ที่จะดาวน์โหลดไฟล์จากอินเทอร์เน็ตเข้ามารันบนเครื่อง จากการสอบสวนพบว่า Matthew Manning ผู้ดูแลโครงการถูกแฮกบัญชีใน Rubygems จนคนร้ายสามารถอัพโหลดโมดูลขึ้นไปได้เอง
ทาง Rubygems สอบสวนเพิ่มเติมและพบว่าที่จริงแล้วมีโมดูลอีกนับสิบที่มีโค้ดแบบเดียวกัน แต่โมดูลส่วนมากเป็นการนำโค้ดโมดูลอื่นมาเพิ่มโค้ดมุ่งร้ายและอัพโหลดไปใหม่ในชื่ออื่น โดยโค้ดเหล่านี้ถูกดาวน์โหลดไปบ้างระดับร้อยครั้งต่อโมดูล รวมแล้วมีโค้ดถูกดาวน์โหลดทั้งหมดหลายพันครั้ง
ฟีเจอร์ย่อยของ macOS Catalina (OSX 10.15) นอกจากจะเปลี่ยน bash เป็น zsh แล้ว ยังมีการเปลี่ยนแปลงปลีกย่อยที่มีความสำคัญอยู่อีกหลายอย่าง ได้แก่
นับจากภาษา Ruby ออกเวอร์ชัน 2.0 ในปี 2013 เป็นต้นมา โครงการ Ruby เปลี่ยนมาใช้วิธีออกรุ่นใหม่ปีละครั้งในช่วงวันคริสต์มาสของทุกปี ซึ่งเวอร์ชันใหม่ของปีนี้นับมาถึง Ruby 2.6.0 แล้ว
ของใหม่ที่สำคัญใน Ruby 2.6 คือเริ่มทดลองใช้คอมไพเลอร์แบบ JIT (Just-In-Time) เพื่อประสิทธิภาพที่ดีขึ้น โดยวิธีการทำงานของ Ruby JIT จะแปลงโค้ดภาษา Ruby มาเป็นภาษา C ก่อน เพื่อให้คอมไพเลอร์ภาษา C ตัวอื่นๆ (เช่น GCC, Clang หรือ Microsoft VC++) แปลงโค้ดภาษา C เป็นเนทีฟอีกต่อหนึ่ง
บริการ AWS Lambda เปิดตัวเมื่อปี 2014 และเป็นผู้บุกเบิกการประมวลผลแบบ serverless ที่ไม่ต้องเปิดเครื่องค้างไว้รอรับคำสั่งตลอดเวลา ก่อนหน้านี้ Lambda รองรับโค้ดภาษา Java, Node.js, C#, Python และเมื่อต้นปีนี้คือ Go
ล่าสุด AWS Lambda ประกาศรองรับการนำเข้ารันไทม์ภาษาใดก็ได้แล้ว (custom runtime) พร้อมทั้งประกาศรองรับภาษาใหม่คือ Ruby, C++ และ Rust ผ่านระบบรันไทม์ใหม่นี้
เฟรมเวิร์ค Ruby on Rails ออกรุ่น 5.0 เพิ่มฟีเจอร์สำคัญสองอย่างได้แก่ Action Cable และ API mode
Action Cable เป็นเฟรมเวิร์คสำหรับการรองรับ WebSocket ใน Rails และเพื่อรองรับ WebSocket เซิร์ฟเวอร์สำหรับโหมดพัฒนาจะกลายเป็น Puma แทน Webrick
API mode โหมดสำหรับรัน Rails โดยไม่มีหน้าเว็บ ตัวเฟรมเวิร์คจะบางลงและทำงานกับ JSON เป็นหลัก
นอกจากนี้ Rails 5.0 ยังมาพร้อมกับ Turbolinks 5.0 เฟรมเวิร์คสำหรับการพัฒนาเว็บแอปพลิเคชั่นแบบหน้าเดียวโดยไม่ต้องโหลดหน้าเว็บใหม่
Google App Engine เริ่มรองรับการพัฒนาโปรแกรมด้วยภาษา Ruby แล้ว สถานะตอนนี้ยังเป็นขั้น Beta แต่นักพัฒนาก็สามารถใช้เฟรมเวิร์คยอดนิยมอย่าง Rails หรือ Sinatra ได้แล้ว
การใช้งาน Ruby บน App Engine ยังสามารถใช้แพ็กเกจ gcloud เพื่อเข้าถึงฟีเจอร์ต่างๆ ของ Google Cloud Platform (เช่น BigQuery หรือ Cloud Datastore) ได้ทันที นอกจากนี้กูเกิลยังเปิดซอร์สตัวซอฟต์แวร์ทั้งหมดที่ใช้รัน Ruby บน App Engine ต่อสาธารณะด้วย
ก่อนหน้านี้ App Engine รองรับการพัฒนาด้วยภาษา Python, Java, Go ตามด้วย PHP และ Node.js รวมทั้งหมด 5 ภาษา ส่วน Ruby นับเป็นภาษาที่หกครับ
ปัญหาความปลอดภัยจากการออกแบบของ Ruby on Rails (RoR) อาจจะทำให้หลายบริการตกอยู่ในความเสี่ยงที่แฮกเกอร์สามารถนำ cookie เดิมมาใช้งานซ้ำได้ เพราะการจัดเก็บข้อมูลซ้ำ ทำให้เว็บแอพพลิเคชั่นที่ไม่ระวัง กลับใส่ข้อมูลการล็อกอินเอาไว้ใน CookieStore ทำให้แฮกเกอร์ที่ดักจับ cookie จากเบราว์เซอร์ผู้ใช้ได้สามารถนำกลับมาใช้ใหม่ได้เรื่อยๆ แม้ว่าผู้ใช้จะล็อกเอาต์ไปแล้ว
เว็บไซต์หลักของภาษา Ruby (http://www.ruby-lang.org) เตรียมปรับโฉมใหม่แบบยกเครื่องฉลอง 20 ปี ใครมีไอเดียอยากเห็นเว็บใหม่เป็นแบบไหน ก็ส่งงานออกแบบเข้าร่วมประกวดได้ภายใน 15:00 นาฬิกาของวันที่ 8 พฤศจิกายนนี้ครับ (รายละเอียดทั้งหมด)
จุดสำคัญของการเปลี่ยนแปลงครั้งนี้ หนีไม่พ้นความต้องการรองรับจอที่ขนาดหลากหลายมากขึ้น เพราะหน้าเว็บตอนนี้แสดงผลได้ดีแค่บนจอคอมพิวเตอร์เท่านั้น ใครจะร่วมแข่งขันก็อย่าลืมหน้าเว็บสำหรับมือถือและแท็บเล็ตด้วยนะครับ
ที่มา: Ruby News
ช่องโหว่ของ Ruby on Rails ที่ถูกค้นพบในเดือนมกราคมปีนี้ กลายเป็นช่องทางสำคัญให้แฮ็กเกอร์เจาะเข้าไปยังเซิร์ฟเวอร์ที่ติดตั้ง Rails เอาไว้ และเปลี่ยนเซิร์ฟเวอร์เหล่านี้เป็น botnet สำหรับอาชญากรรมคอมพิวเตอร์ด้านอื่นๆ (เช่น มัลแวร์) ต่อไป
ช่องโหว่ตัวนี้ของ Rails มีความรุนแรงในระดับสูง (critical) เพราะเปิดโอกาสให้แฮ็กเกอร์ส่งโค้ดอันตรายเข้ามารันบนเซิร์ฟเวอร์ได้จากระยะไกล ทางทีมพัฒนา Rails ออกแพตช์แก้นานแล้วแต่ก็ยังมีเซิร์ฟเวอร์อีกจำนวนมากที่ยังไม่ได้อัพแพตช์ตาม และกลายเป็นเหยื่อของช่องโหว่นี้ในที่สุด
ผู้ใช้ Rails ควรอัพเกรดเป็นเวอร์ชัน 3.2.11, 3.1.10, 3.0.19, 2.3.15 ขึ้นไปครับ