Hi, it’s Greg. Let’s explore this week’s changes in the Rails codebase.
Source: https://rubyonrails.org/2026/8/28/this-week-in-rails. 8 Sync News only summarizes and links out; content copyright belongs to the authors and original sources.
Khi chạy bin/rails console, Rails chỉ thực thi khối code trong Rails.application.console, không ảnh hưởng tới các tiến trình web hoặc background job. Do đó, nếu muốn tắt log ra console mỗi khi mở session, developer thường phải dán thủ công các lệnh như Rails.logger.level = Logger::WARN mỗi lần, gây lặp lại và dễ quên. Khi quên tắt log, console sẽ bị lũy tập thông báo debug làm giảm khả năng đọc output và làm chậm việc tương tác. Định nghĩa một helper disable_console_loggers! và enable_console_loggers! внутри блока Rails.application.console một lần để tự động bật/tắt logger, sau đó chỉ cần gọi helper trong mỗi session, tránh việc dán lặp lại và đảm bảo chỉ ảnh hưởng tới môi trường console.
Đây là phương pháp giúp quản lý logger hiệu quả hơn trong môi trường Rails console mà không cần lặp lại các cài đặt cấp độ logger.
Đang tải bình luận…
Hai lỗi bảo mật mới được phát hiện trong gem resolv, thành phần chuẩn của Ruby dùng để giải quyết DNS. Các lỗi này đã được cấp mã CVE-2026-80212 và CVE-2026-80213. Do gem resolv được tích hợp sẵn trong mọi cài đặt Ruby, bất kỳ ứng dụng nào sử dụng hàm resolv để thực hiện truy vấn DNS đều có thể bị ảnh hưởng. Nếu được khai thác, lỗi có thể cho phép kẻ tấn công thực hiện các hành vi không mong muốn như gián điệp dữ liệu hoặc gây từ chối dịch vụ. Bài học là cần thường xuyên kiểm tra và cập nhật các gem phụ thuộc, đặc biệt là những thành phần chuẩn của ngôn ngữ.
Lập trình viên nên đọc bài này để biết cách bảo vệ ứng dụng Ruby khỏi hai lỗ hổng bảo hiểm nguy hiểm trong gem resolv.
Bối cảnh: Khi phát triển ứng dụng Rails, việc tái sử dụng giao diện thường gặp khó khăn do view phức tạp và lặp lại code. Nguyên nhân kỹ thuật: Bài viết giới thiệu một thư viện thành phần cho Rails 8 được xây dựng trên ViewComponent để tách biệt logic và markup, kết hợp TailwindCSS 4.0 để cung cấp lớp utility-first và Stimulus để xử lý hành vi JavaScript mà không cần viết nhiều mã tùy chỉnh. Hệ quả: Các thành phần này có thể được import trực tiếp vào view, giúp giảm lượng ERB/HTML trùng lặp, tăng tốc độ xây dựng UI và đảm bảo sự nhất quán thiết kế nhờ các lớp Tailwind được định nghĩa sẵn. Điều đáng học: Kết hợp ViewComponent với TailwindCSS và Stimulus cho thấy cách tận dụng công cụ frontend hiện đại bên trong ecosystem Rails mà không sacrificing sự đơn giản của convention-over-configuration, từ đó mở rộng khả năng tùy chỉnh mà vẫn giữ code sạch và dễ bảo trì.
Tìm hiểu cách xây dựng thư viện component Rails 8 hiện đại với ViewComponent, TailwindCSS 4.0 và Stimulus để tối ưu hóa giao diện người dùng.
Nhiều lập trình viên Ruby đã quen thuộc với Rails nhưng muốn tìm kiếm framework nhẹ, có cấu trúc rõ ràng hơn để phát triển ứng dụng web. Hanami (đříve gọi là Lotus) được thiết kế dựa trên kiến trúc mô-đun, tách riêng lớp giao diện, logic nghiệp vụ và persistence, sử dụng các gem như dry‑system, rom‑rb và Sequel để giảm sự phụ thuộc vào Rails. Khi thử nghiệm nhanh, tác giả thấy Hanami cho phép khởi động ứng dụng trong ít giây, cấu hình route rõ ràng và mã nguồn dễ kiểm thử đơn vị mà không cần tải toàn bộ stack Rails. Bài viết nhấn mạnh rằng nếu dự án cần hiệu suất cao, sự linh hoạt trong việc chọn ORM hoặc muốn tránh magie của Rails, Hanami là một lựa chọn đáng cân nhắc, nhưng cần đầu tư thời gian học hỏi hệ sinh thái dry‑rb và rom. Do đó, nếu bạn là lập trình viên Ruby đang suy nghĩ mở rộng công cụ ngoài Rails, đọc bài gốc sẽ cung cấp cái nhìn thực tế về ưu điểm và giới hạn của Hanami qua kinh nghiệm thực tế ngắn gọn của tác giả.
Bài viết này giúp lập trình viên Ruby khám phá lựa chọn thay thế sáng tạo và nhẹ nhàng cho Rails.
Agents on Rails đang phát triển và vừa công bố rằng lemans – hệ thống harness tạo ra mọi con số đã công bố – hiện đã được mã nguồn mở. Đây là bước tiến quan trọng vì lemans trước đây là thành phần nội bộ dùng để đo lường và so sánh hiệu suất của các mô hình AI. Đồng thời nhóm đã chạy thử bốn mô hình mới: Sonnet 5, Terra, một phiên bản Qwen có trọng lượng mở cho phép chạy trên máy cá nhân, và một mô hình không muốn tiết lộ tên. Với lemans mã nguồn mở, cộng đồng có thể tái tạo, mở rộng và tích hợp các bài kiểm tra này vào quy trình của riêng mình. Bài học là việc công khai công cụ đo lường và chia sẻ mô hình mở trọng lượng giúp tăng độ minh bạch và tăng tốc độ đổi mới trong lĩnh vực AI agents.
Lập trình viên nên đọc bài viết này để cập nhật về công nghệ Agents on Rails và nguồn mở của lemans, cũng như khám phá các mô hình AI mới như Sonnet 5, Terra và Qwen.
Bài viết đề cập đến các hướng dẫn viết mã nguồn, chia thành ba phần: chung cho mọi ngôn ngữ, riêng Ruby và trong ứng dụng Rails. Nó nhấn mạnh những nguyên tắc cơ bản mà mọi ngôn ngữ đều đáp ứng, đồng thời các quy định cụ thể của Ruby và các pattern áp dụng trong môi trường Rails. Khi tuân thủ, developer giảm lỗi logic, tăng độ đọc được và khả năng bảo trì của code. Do đó, nếu bạn đang cân nhắc đọc bài gốc, hãy xem cách nó ánh sáng các chi tiết kỹ thuật như sử dụng method private trong Ruby và cấu trúc controller trong Rails. Việc áp dụng các hướng dẫn này giúp tối ưu hoá quy trình phát triển và giảm chi phí sửa lỗi trong dài hạn.
Bài viết này cung cấp hướng dẫn lập trình toàn diện từ nguyên tắc chung đến quy định cụ thể cho Ruby và Rails, giúp bạn viết code chất lượng hơn.
Tháng Bảy, các ứng dụng Rails và backend ổn định (calm backends) lại được đánh giá cao về mặt văn hóa, trong khi những "Fashion Stacks" phải trả tiền cho chế độ trực (on-call) dù không thực sự cần thiết.
Lập trình viên nên đọc bài này để hiểu cách các stack truyền thống (như Ruby on Rails) vẫn chiếm ưu thế trong các công việc đòi hỏi sự ổn định và hiệu suất cao, trong khi các stack "trang trí" (mới) chỉ được ưu tiên khi cần giải quyết vấn đề cấp bách ngay lập tức.
Trong Rails, Active Record cung cấp nhiều phương thức ghi dữ liệu như delete, delete_all, destroy, destroy_all, update_all, insert_all và upsert_all, nhưng không phải tất cả đều trải qua toàn bộ vòng đời mô hình. Các phương thức delete/* và insert_all/upsert_all thực hiện thao tác trực tiếp ở mức SQL, vì vậy chúng không kích hoạt callbacks (before/after save, destroy), không chạy validations, không tự động cập nhật cột created_at/updated_at và không khởi tạo đối tượng model đã được load. Khi sử dụng chúng, bạn có thể mất đi các ràng buộc nghiệp vụ, timestamps không chính xác, và các association dependent không được xử lý, dẫn đến dữ liệu lỏng lẻo hoặc không nhất quán nếu không kiểm tra kỹ. Do đó, trước khi chọn một trong những API này, cần xác nhận rằng việc bỏ qua callbacks và validations là chấp nhận được, và nếu cần phải bổ sung logic thủ công hoặc sử dụng các phương thức đầy đủ như save hoặc destroy để đảm bảo tính toàn vẹn.
Bài này giúp lập trình viên hiểu rõ các phương thức ghi Active Record bỏ qua vòng đời đối tượng, từ đó viết code hiệu quả hơn và tránh những lỗi tiềm ẩn.
Read the news here, practice coding, follow structured courses and train for IELTS on our sibling products — all connected through one 8 Sync account.
The ecosystem home: product overviews, blog and full pricing.
ExploreLearn along a clear roadmap: videos, auto-graded quizzes, certificates and mentors who ship for a living.
View the roadmap1,000+ DSA problems in Vietnamese, auto-graded across 7 languages — many FREE, right in your browser.
Practice for freeAI grading for all four IELTS skills with detailed rubric feedback.
Try it freeA 22 MB AI IDE for Vietnamese devs.
Download freeOrganizational memory for AI agents.
ExploreAI that staffs your Fanpage and qualifies leads for you.
Try it