$ the-wire · showcase
Activeresource fixes URL encoding for IDs
By RepoJournal · Filed · About Rails
Activeresource now encodes resource IDs as URL path segments, fixing a corruption bug that turned spaces into plus signs.
Activeresource escaped `id` values with `URI.encode_www_form_component`, an `application/x-www-form-urlencoded` encoder, in both `Base.element_path` and `CustomMethods#custom_method_element_url`. A space became a `+`, so `Person.find("ann mary")` requested `/people/ann+mary.json` and a backend reading the path as a path saw the id as `ann+mary` [1]. Both sites now escape with `ERB::Util.url_encode`, matching the prefix half of the URL [1]. This is a fix for any client relying on path segment semantics for resource IDs.
Active Record removed stale encryption performance tasks and a corresponding dead reject clause from its Rakefile [2]. This cleans up dead code and should not affect runtime behavior.
Rails made the event reporter usable from Ractor workers. Previously, each non-main Ractor created a new event reporter with no subscribers, so controller logging, driven by structured event subscribers, was silenced and workers processed requests without logging anything [3]. Non-main Ractors now inherit the main Ractor's subscriptions, restoring logging in Ractor-based request handling.
Lemans remote gained a round of fixes after morning runs on Daytona. `miniswen` now retries provider errors for about a minute instead of three attempts in roughly seven seconds, so a single TLS blip no longer fails a run. `miniswen-installed` no longer kills the CLI mid-command; max-time is checked between steps, letting a command that started before the deadline run up to its `exec_timeout` [4]. Sandbox creation is retried, and trial patches are now collected on accounting or agent failures as well [5][6]. The fix notes say "A single TLS blip to OpenRouter was enough to fail a run" [4].
Action items
- → Upgrade activeresource to a version including this fix if you use find with IDs containing spaces or UTF-8 characters. rails/activeresource [immediate]
- → If you run Rails with Ractor workers, update to the commit that makes the event reporter usable from Ractor workers to restore request logging. rails/rails [plan]
References
- [1] Encode the id as a URL path segment, not a form value ↗ rails/activeresource
- [2] Remove the dead encryption performance reject clause from the Active Record Rakefile ↗ rails/rails
- [3] Make the event reporter usable from Ractor workers ↗ rails/rails
- [4] remote: retries, smaller uploads, patch on failure ↗ rails/lemans
- [5] - remote: retry sandbox creation, drop the leftover ↗ rails/lemans
- [6] - trial: collect the patch on accounting failures too ↗ rails/lemans