---
format: "aidr-story-markdown/v1"
id: "e8b15e08208dc1cc31de228b7190ca44215d1ba9ab7031593fa56e60432de35d"
canonical_url: "https://aidr.today/e8b15e08?lang=vi"
title: "Campfire trên Ruby 4 Ractors"
lang: "vi"
requested_lang: "vi"
available_langs: ["en","vi"]
translation_fallback: null
fallback_fields: []
published_at: "2026-10-07T05:33:44.000Z"
category: "Open Source"
topics: ["coding","open-source"]
source_urls: ["https://static.lutke.dev/KTK6Vb/campfire-ruby-explainer/","https://lobste.rs/s/daa9vy/campfire_on_ruby_4_ractors"]
summary: "Một bản port của ONCE Campfire giữ lại Ruby nhưng bỏ Rails. Hệ thống phục vụ các trang HTML giống hệt nhau về mặt byte từ một tiến trình duy nhất: Falcon chạy trong các worker Ractor, các module thuần túy kết hợp với SQLite, và cơ chế truyền thông điệp giữa các Ractor thay cho Redis. Trên cùng 4 luồng CPU, ứng dụng này phục vụ các trang động nhanh hơn 15–27 lần so với bản Rails gốc, đồng thời vượt qua bản port Go ở hầu hết các bài kiểm tra. Bản Rails Campfire chạy Thruster, một số tiến trình Puma, các worker Resque và Redis để xử lý các broadcast của Action Cable cùng hàng đợi tác vụ. Bản port này áp dụng kiến trúc của bản Go: mỗi module chuyên trách chạy trên SQLite, tích hợp sẵn hàng đợi và trung tâm cable ngay trong tiến trình. Trong Ruby 4, các thành phần cần chạy song song được đặt vào các Ractor. Mỗi Ractor có khóa riêng, vùng heap riêng và kết nối SQLite riêng. Chúng giao tiếp chỉ bằng cách gửi các thông điệp đóng băng, truyền qua lại giữa các Ractor mà không cần sao chép. Người dùng có thể chọn một luồng để quan sát hệ thống hoạt động. Trình duyệt và cơ sở dữ liệu không nhận thấy sự thay đổi: cùng cookie, cùng CSRF token, cùng signed id, cùng khung Action Cable, cùng URL A…"
---

# Campfire trên Ruby 4 Ractors

> [Open the canonical story](<https://aidr.today/e8b15e08?lang=vi>)

**Published:** 2026-10-07T05:33:44.000Z
**Category:** Open Source
**Topics:** coding, open\-source

## Summary

Một bản port của ONCE Campfire giữ lại Ruby nhưng bỏ Rails\. Hệ thống phục vụ các trang HTML giống hệt nhau về mặt byte từ một tiến trình duy nhất: Falcon chạy trong các worker Ractor, các module thuần túy kết hợp với SQLite, và cơ chế truyền thông điệp giữa các Ractor thay cho Redis\. Trên cùng 4 luồng CPU, ứng dụng này phục vụ các trang động nhanh hơn 15–27 lần so với bản Rails gốc, đồng thời vượt qua bản port Go ở hầu hết các bài kiểm tra\. Bản Rails Campfire chạy Thruster, một số tiến trình Puma, các worker Resque và Redis để xử lý các broadcast của Action Cable cùng hàng đợi tác vụ\. Bản port này áp dụng kiến trúc của bản Go: mỗi module chuyên trách chạy trên SQLite, tích hợp sẵn hàng đợi và trung tâm cable ngay trong tiến trình\. Trong Ruby 4, các thành phần cần chạy song song được đặt vào các Ractor\. Mỗi Ractor có khóa riêng, vùng heap riêng và kết nối SQLite riêng\. Chúng giao tiếp chỉ bằng cách gửi các thông điệp đóng băng, truyền qua lại giữa các Ractor mà không cần sao chép\. Người dùng có thể chọn một luồng để quan sát hệ thống hoạt động\. Trình duyệt và cơ sở dữ liệu không nhận thấy sự thay đổi: cùng cookie, cùng CSRF token, cùng signed id, cùng khung Action Cable, cùng URL A…

## Sources

- [Story source](<https://static.lutke.dev/KTK6Vb/campfire-ruby-explainer/>)
- [Discussion](<https://lobste.rs/s/daa9vy/campfire_on_ruby_4_ractors>)

