Repository navigation
Make the RubyLLM provider work with ruby_llm 2.2 - #710
Merged
Merged
Conversation
ruby_llm 2.2.0 (2026-11-10) turned every CI test leg red: 47 errors and 2
failures, all in the RubyLLM provider and the evals conversation check.
Three changes in the gem reached the provider:
- `Message#tool_calls` is a `ToolCall::Collection` whose `each` yields the
calls, not ID-and-call pairs, with the keys behind `each_key`. The
provider's `|id, tc|` blocks got the call as `id` and nil as `tc`.
`each_tool_call` now yields key and call for a Hash (1.16 to 2.1) and for
the collection alike.
- A streamed delta carries the provider's call ID in `provider_call_id`
and leaves `id` nil until the message completes. The provider treated a
nil `id` as an argument fragment, so each new call joined the latest one
and the arguments doubled up (`{"city":"Denver"}{"city":"Denver"}`).
`streamed_tool_call_id` reads `provider_call_id` first.
- `Chat#with_tools` registers a tool under `qualified_name` and reads
`namespace` and `deferred?`. `ToolProxy` answers nil, the name and false.
The evals conversation script mirrors RubyLLM's install migration, so it
gains 2.2's `acts_as_chat` modules (chat_files, chat_column_guard and the
rest, required where the release has them), the `provider_call_id`,
`namespace`, `claimed_until` and MCP columns, the unique registry index the
2.2 upsert needs, and the reworded unavailable-tool error.
Full suite under gemfiles/ruby_llm_2.gemfile: 4601 runs, 0 failures (the
five RubyLLMIntegrationTest errors need a real key, as on main). The
RubyLLM provider tests under gemfiles/ruby_llm_1.gemfile (1.16.0): 85 runs,
0 failures. RuboCop clean.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PCEJHsJpjXpDa9Kuq9i4Yg
TonsOfFun
force-pushed
the
fix/ruby-llm-2.2
branch
from
November 12, 2026 19:37
bc5d049 to
ed499f5
Compare
ubuntu-latest now resolves to ubuntu-26.04, where setup-ruby builds only the latest patch of each series. The lint job pinned ruby-3.3.0 and failed in Set up Ruby with "Unavailable version 3.3.0 for ruby on ubuntu-26.04". "3.3" follows the series, as release.yml already does. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCEJHsJpjXpDa9Kuq9i4Yg
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
ruby_llm 2.2.0 shipped on 2026-11-10 and every CI test leg on
mainhas been red since (run 43279380137 on5b514e23: 47 errors, 2 failures, allRubyLLM*tests andEvalsRubyLLMConversationTest). The three provider PRs waiting on fork CI (#705, #707, #709) fail for the same reason, as did #704's and #706's re-runs.What changed in ruby_llm 2.2, and the fix
Message#tool_callsis aToolCall::Collection;eachyields the calls, keys are behindeach_key|id, tc|blocks got the call asid,nilastc→undefined method 'name' for nileach_tool_callyields key and call for a Hash (1.16–2.1) and for the collectionprovider_call_id;idis nil on chunks{"city":"Denver"}{"city":"Denver"})streamed_tool_call_idreadsprovider_call_idfirstChat#with_toolsasks each tool forqualified_name,namespace,deferred?undefined method 'namespace' for ToolProxyToolProxyanswers name, nil, falseThe evals conversation script mirrors RubyLLM's install migration and
railtie, so it also learns 2.2'sacts_as_chatmodules (chat_files,chat_column_guard, … required where the release has them), the new tool-call and message columns, the unique[provider, model_id]index the 2.2 model upsert needs, and the reworded unavailable-tool error.Verified
gemfiles/ruby_llm_2.gemfile(ruby_llm 2.2.0): 4601 runs, 0 failures; the fiveRubyLLMIntegrationTesterrors need a real key, as on main.gemfiles/ruby_llm_1.gemfile(1.16.0): 85 runs, 0 failures.CHANGELOG entry under Unreleased → Fixed. For 1.9.8.
🤖 Generated with Claude Code
https://claude.ai/code/session_01PCEJHsJpjXpDa9Kuq9i4Yg