RubyLLM 2.0.0.rc3 improves the Rails upgrade path and fixes issues found while testing RC2.
- Support online copy upgrades on PostgreSQL, MySQL, and SQLite. Prepared 1.16 processes can keep serving during preparation and backfill, with a controlled pause for the final switch. Follow the upgrade guide for the required deployment order.
- Keep chat pricing scoped to the provider that handled the request when model IDs overlap, including streamed responses and Rails reloads (#923). Previously recorded costs are unchanged.
- Preserve a child Agent's own instructions or conventional prompt when inheriting configuration (#915).
- Handle empty tool arguments in Gemini Interactions (#911).
- Reject invalid reranking document indices and duplicate Gemini embedding batch positions instead of associating results with the wrong inputs (#917, #918).
- Send text attachments to Mistral OCR as data URIs (#919).
- Avoid polynomial regex backtracking when normalizing Bedrock video output prefixes.
- Refresh the bundled model catalog and aliases from the provider APIs and models.dev.
- Reject DeepSeek's unsupported
:web_searchalias withRubyLLM::UnsupportedServerToolError. Its current Responses API silently ignores built-in web search. Patch tools, raw tool definitions, and existing search history remain supported. - Validate uploaded files in the Rails attachment example. If your application copied the older example, check that the parameter is an
ActionDispatch::Http::UploadedFilebefore passing it towith:. Updating the gem alone does not fix an application's unchecked upload parameter. String paths and URLs remain supported.
Install this release with:
gem 'ruby_llm', '2.0.0.rc3'Coming from 1.x? Read the 2.0 upgrade guide before upgrading an existing application.