We shipped three releases in three days. Wednesday, Friday, and Friday again. Each one fixed real problems. Each one shipped as soon as it was ready.
1.4.0: The Structured Output Release (Wednesday)
One of the biggest problem with LLMs is getting them to return data in the format you need.
We all had code like this:
Now with structured output:
No more regex. No more parsing. Just data structures that work.
Oh, and Daniel Friis released RubyLLM::Schema just for the occasion, but you can use any gem you want with RubyLLM, or even write your own JSON schema from scratch.
Rails Generators: From Zero to Chat
We didn’t have Rails generators before. Now we do:
This creates everything you need:
- Migrations
- Models with acts_as_chat, acts_as_message, and acts_as_tool_call
- A clean initializer
Your Chat model works like any Rails model:
From rails new to working chat in under 5 minutes.
New callback to see what your AI is doing:
Essential for debugging and auditing AI behavior.
Direct Parameter Provider Access
Need that one weird parameter? Use with_params:
No waiting for us to wrap every provider option.
Critical Bug Fixes and Other Improvements in 1.4.0
- Anthropic multiple tool calls: Was only processing the first tool call, silently ignoring the rest
- Streaming errors: Now handled properly in both Faraday V1 and V2
- Test fixtures: Removed 60MB of unnecessary test data
- Message ordering: Fixed race conditions in streaming responses
- JRuby support: Now officially tested and supported
- Direct access to raw responses: Get the raw responses from Faraday for debugging
- GPUStack support: A production-ready alternative to Ollama
Full release notes for 1.4.0 available on GitHub.
1.5.0: Two New Providers (Friday)
Mistral AI
63 models from France, from tiny to massive:
Perplexity
Real-time web search meets LLMs:
Full release notes for 1.5.0 available on GitHub.
Rails Generator Fixes
- Fixed migration order (Chats → Messages → Tool Calls)
- Fixed PostgreSQL detection that was broken by namespace collision
- PostgreSQL users now get jsonb columns instead of json
1.5.1: Quick Fixes (Also Friday)
Found issues Friday afternoon. Fixed them. Shipped them. That’s it.
Why make users wait through the weekend with broken code?
- Fixed Mistral model capabilities (was a Hash, should be Array)
- Fixed Google Imagen output modality
- Updated to JRuby 10.0.1.0
- Added JSON schema validation for model registry
Full release notes for 1.5.1 available on GitHub.
The Philosophy: Ship When Ready
Three days. Three releases. Each one made someone’s code work better.
We could have waited. We could have bundled everything into one release next week. But every moment we wait is a moment someone’s dealing with a bug we already fixed.
The structured output in 1.4.0? People needed that since before RubyLLM existed. The PostgreSQL fix in 1.5.0? Someone’s migrations were failing Thursday. The Mistral capability fix? Breaking someone’s code Friday morning.
When code is ready, you ship.
What You Can Build Now
With structured output and multiple providers, you can build real features:
Use It
Full backward compatibility. Your 1.0 code still runs. These releases just made everything better.
.png)
