The Ruby and Rails community linklog
Made a library? Written a blog post? Found a useful tutorial? Share it with the Ruby community here or just enjoy what everyone else has found!
Submit a post
Post Preview
Note: Only the first pargraph is shown on the front page and overly long paragraphs may be broken up.
Inside Ruby’s net/http 🔍
Exploring sockets, requests, responses, SSL/TLS & protocol internals. Read more
The Perfect Zsh Setup: Oh My Zsh on CachyOS/Arch
If you want a terminal that tells you if a command is valid, predicts what you’re about to type, and… Read more
Why "Good Enough" Design is the Solo Developer's Secret Weapon
I spent years looking at websites like Stripe or Linear and feeling depressed. I would try to… Read more
Inkmark: a very fast, feature-packed, AI-first Markdown gem for Ruby
Written in Rust. CommonMark+GFM conformant. Features include: strong security by default and host/protocol whitelists for links and images, syntax highlighting, frontmatter, ToC, plain text export, structured extraction of headings/images/links/code, statistics with char/word count and language detection, emoji shortcodes. Read more
CMDx 2.1.0 — clearer errors, less pipeline friction
CMDx has been updated with richer error messages that include links to documentation and common issues. Middleware’s how support using status methods to halt processing. There are also a slew of quality of life updates that can be reviewed in the changelog.
Rubyzen: write architectural lint rules as RSpec tests
Rubyzen is a modern linter for Ruby that allows you to write architectural lint rules as unit tests
AI-driven development - It's a spectrum
AI-driven development is a spectrum, not a one-size-fits-all solution. Like editor setups in 2014-2018, you need to find your own workflow instead of chasing every new tool or influencer recommendation. I’m sharing how I navigate this without losing my sanity. Read the full article on:
Most Ruby developers think JSON is “just a gem”.
Under the hood, Ruby’s JSON stack is a highly optimized native C engine with: • recursive parsers • SIMD optimizations • specialized float serialization • buffer management • UTF-8 handling • native Ruby object generation Read more
Completing the Puzzle: Adding Signup and Password Resets to Rails 8 Auth
If you’ve tried the new rails generate authentication command in Rails 8, you know it’s a breath of… Read more
TIMEx — a deadline engine for Ruby
Production timeouts are rarely “just call Timeout.timeout.” You need a real budget, predictable expiry, and a way to pass that budget to the next service. TIMEx is a small, stdlib-only gem that treats timeouts as deadlines: monotonic clocks, pluggable strategies, and one consistent API—no Rails, no ActiveSupport. Read more
Goodbye Nginx and Redis: Building a Zero-Service Monolith in Rails 8
The “Zero-Service” Monolith: How to run your entire app on a single server port For years,… Read more
Why Rails Runs Code Before Your Controller Action
before_action is where a controller declares the request prerequisites that must run before action-specific code. Read more
Kobako - the mruby sandbox for AI Agent
Kobako brings a Cloudflare Code Mode-inspired sandbox to Ruby/Rails, allowing AI agents to safely write code and interact with your application via RPC binding. Read more
Rails 8 Built-in Auth vs. Devise: Why the Default Finally Wins
For almost 15 years, if you wanted to build a Rails app with a login system, the answer was always… Read more
Build Once, Launch Ten Times: The Rails Engine SaaS Strategy
If you are a solo developer with “Shiny Object Syndrome,” you know the feeling. You have a great idea… Read more
Ditching Redis: How to Handle WebSockets in Rails 8 with Solid Cable
Real-Time Rails Without Redis: A Guide to Solid Cable For years, adding a single real-time… Read more
The Magic of Turbo Frames: Infinite Pagination in Pure HTML
Building an Infinite Scroll in Rails 8 (Zero Custom JavaScript) Every modern web… Read more
CRuby threads don't give you real parallelism, the GVL blocks it.
Ractors (Ruby 3.0+) fix this by holding a GVL per ractor, not one global lock. Read more