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.
Build Referral Systems in Rails applications
Building a great product is a good starting point for success, but it’s rarely enough to generate meaningful traction. There are many channels we can use for distribution: organic search, social media, paid advertising, and PR, among others. However, if we find success with any of these channels, user acquisition costs usually get higher with time, and that can become a real issue if we’re caught off-guard. Adding a referral system is a good way to acquire a portion of our users for a lower price. In this article, we will learn how to add a referral system to a Rails app using the Refer gem to improve our chances of success. Let’s start by understanding why adding a referral system is desired. Jump to the application setup if you already know about them.
RubyElders — We ❤️ Ruby March 2025 Ecosystem Report
A deep dive into the health of widely used RubyGems. From hidden, rarely updated gems to high-profile libraries like rest-client, we explore what’s being maintained, what’s ready for deprecation, and how simple CI practices can keep the ecosystem strong for years to come. [more inside]
⌛ Jekyll-Timeago: v1.0 release
Jekyll-Timeago reaches v1! After some years of stability, it’s time to mark this important milestone 🎉 [more inside]
brave_search - Ruby client for Brave Search API with Rails integration
A modern Ruby client for the Brave Search API that brings web search capabilities to Ruby applications. [more inside]
llm.rb: v0.11.0 released
llm.rb is a zero-dependency Ruby toolkit for Large Language Models that includes OpenAI, Gemini, Anthropic, DeepSeek, Ollama, and LlamaCpp. The toolkit includes full support for chat, streaming, tool calling, audio, images, files, and JSON Schema generation.
Build Your Own URL Shortener with Rack
Build a complete, functional URL shortener from scratch with Ruby and Rack. This tutorial guides you in creating a real-world web application with a solid foundation to build upon. [more inside]
Lancelot: Ruby Bindings for Lance with Hybrid Search
Lancelot provides Ruby-native bindings to Lance, a modern columnar data format designed for ML workloads. Think Apache Parquet meets vector database - perfect for storing and searching embeddings, text, and structured data all in one place. [more inside]
Starting to update RubyFlow
RubyFlow has been running on a 5+ year old codebase and in order to add new features (such as spam mitigation!!) I’ve had to massively gut the codebase to get it running on Ruby 3.4, the latest Rack, the latest Sinatra, ripping out Sass, etc. I have just deployed the very first step of this (hence the fonts changing and a few other things). [more inside]
Want to build an AI agent in Ruby but don’t know where to start?
I took a ruby AI workflow app and transformed it from “cute workflow” to a real agent and wrote down the scars. No hype. Just what actually worked. [more inside]
Rails 8 + Hotwire 🤝 Turbo 🤝 React — gem 'islandjs-rails'
IslandJS Rails supports the development of React islands in Rails apps by synchronizing package.json dependencies with UMD libraries served in public/islands/vendor.:
RapiTapir - APIs so clean and fast, they practically run wild! 🦙⚡
🦙 Introducing RapiTapir: Type-Safe HTTP APIs for Ruby [more inside]
Building React Apps in Rails Without the API Overhead: A Complete Superglue Guide
Learn how to integrate React into Rails applications using Superglue while keeping form helpers, flash messages, and authentication flows. This comprehensive guide covers everything from setup to server-side rendering, showing you how to build interactive UIs without sacrificing Rails productivity. [more inside]
Model Context Protocol
Model Context Protocol (MCP) is an API interface for your applications that are formatted in a way that machine learning platforms can interact with them. They can be used to generate AI insights, perform tasks based on user input or other things.
The /o in Ruby regex stands for “oh the humanity!”
A journey into the wildly confusing /o regex modifier in Ruby. [more inside]
Persistent Connections in Ruby: Streaming Bodies, SSE, and WebSockets with Rack
Learn how to implement persistent connections in Ruby using Rack, from streaming bodies and Server-Sent Events (SSE) to real-time WebSockets, with clear examples. [more inside]
Consistent MySQL structure.sql Diffs for Rails
A guide on how to remove noise from structure.sql diffs in Rails when working with MySQL. [more inside]
Introducing Decant
Introducing Decant, a dependency-free frontmatter-aware framework-agnostic wrapper around a directory of static content (probably Markdown) that pairs perfectly with Parklife plus your favourite Ruby web framework to help you make a content-driven static website:
Turbo adapter: Hotwire Native's backdoor entrance
Understanding exactly how Hotwire Native integrates with the web app can be very helpful both in debugging issues and deciding if Hotwire Native is the right choice in the first place. In particular, it’s useful to understand how it takes over web navigation so it can make it feel native. This is what the article explains: Turbo adapter: Hotwire Native’s backdoor entrance
Build Custom ActiveStorage Analyzers for Ruby on Rails
We’ll dive into how ActiveStorage treats uploaded data, and how to extend this process, in part one of this two-part series:
Scaling image classification with AI
Learn how we used multi-modal Large Language Models to automatically categorize more than 1 million boat images, reducing months of manual work to a couple of days. [more inside]
Using Dispatch to communicate between Stimulus Controllers
A short article on how multiple Stimulus controllers communicate with each other using dispatch-method in Stimulus controller.
Adding an MCP server to a Rails app
Learn how to integrate the Model Context Protocol (MCP) into your Rails application to create intelligent, AI-powered tools that can interact with your data and perform complex tasks conversationally. Complete with code examples, client integrations, and real-world use cases
Rails Engine Assets: Making Your Gem Work with Sprockets AND Propshaft
The golden rule for libraries is to support integration with as many parent apps as possible because you want to cover as much as you can of the full spectrum of customers but Sprockets and Propshaft makes that difficult to do. [more inside]