You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 7d2202f
Browse filesBrowse the repository at this point in the historyBrowse files
The compatibility matrix runs bundle lock --update. On October 3 it
still resolved json 2.21.2, because rubocop 1.88.2 and standard
1.56.0 held json below 3. rubocop 1.91.0 and standard 1.57.0 allow
json 3, so the matrix now resolves json 3.0.2, and every Rails 7.1,
7.2, and 8.0 job fails with "unknown keyword: quirks_mode". main
fails the same way today.
The break is in Active Support, not in Solid Objects. Local checks
with json 3.0.2 show that Active Support 7.1.6 and 8.0.5.1 fail to
encode and decode, 8.1.3.1 fails to decode, and only 8.1.4 works.
An application on those Rails lines must pin json 2.x, so the matrix
now pins it too and tests the configuration that the guide
prescribes. The Rails 7.1 suite passes with the pin: 873 runs, 0
failures.
Correct the json note in docs/operations.md, docs/agents.md, the
quickstart README, and context7.json. The earlier note named only the
8.1 releases before 8.1.4.
"projectTitle": "Solid Objects for Rails (solid_objects)",
4
4
"description": "SQL-backed virtual actor library for Ruby on Rails. Actors have stable identities, durable JSON state in SQLite, PostgreSQL, or MySQL, ordered per-identity mailboxes, fenced activation, durable reminders, and transactional effects. Requires Ruby 3.3+ and Rails 7.1+.",
"Solid Objects requires Rails 7.1 or newer and Ruby 3.3 or newer. It is a Rails engine, not a framework-independent Ruby library.",
10
21
"Install with bundle add solid_objects, bin/rails generate solid_objects:install, bin/rails db:migrate, and bin/rails solid_objects:doctor.",
22
+
"The json gem 3.x works only with Active Support 8.1.4 or newer. On Rails 7.1, 7.2, 8.0, or 8.1 before 8.1.4, pin gem \"json\", \"~> 2\".",
11
23
"The generated authorization policies deny every operation. Production policies must bind the actor type and ID to the authenticated user or tenant, and callers pass authorization_context:.",
12
24
"Run bundle exec solid_objects start for reminders, async calls, effects, and broadcasts. Direct synchronous calls do not need it.",
13
25
"Delivery is at least once. Effect handlers registered with SolidObjects.register_effect must use context.id as the idempotency key.",
The generator adds an initializer and copies migrations into the application.
65
65
The doctor checks the configuration, the tables, and one real actor round trip.
66
66
67
-
If the doctor or an actor call fails with
68
-
`ArgumentError: wrong number of arguments (given 2, expected 1)` from
69
-
`ActiveSupport::JSON.decode`, the application has Active Support 8.1.3.1 or
70
-
earlier with `json` 3.0.2. Upgrade Rails to 8.1.4 or newer. If you cannot
71
-
upgrade, pin `gem "json", "~> 2"` in the `Gemfile`.
67
+
The `json` gem 3.x works only with Active Support 8.1.4 or newer. On Rails
68
+
7.1, 7.2, 8.0, or 8.1 before 8.1.4, pin `gem "json", "~> 2"` in the
69
+
`Gemfile`. Without the pin, Active Support raises an `ArgumentError`, such as
70
+
`unknown keyword: quirks_mode`, for every JSON column.
72
71
73
72
[Installing and upgrading](operations.md#installing-and-upgrading) has the
74
73
details.
@@ -238,7 +237,7 @@ runs checks 2 and 4 against a new Rails application.
238
237
|`SolidObjects::SyncTimeout`| The call did not finish in time. The message is still durable. Use its `message_reference` to wait for the result |
239
238
|`SolidObjects::ApplicationWriteForbidden`| A handler wrote a model directly. Use `commit_action` or `emit`|
240
239
|`SolidObjects::Rejected`| The actor called `reject`. This is a business result, not a retry |
241
-
|`ArgumentError` from `ActiveSupport::JSON.decode`| Upgrade Rails to 8.1.4 or newer, or pin `gem "json", "~> 2"`|
240
+
|`ArgumentError` from `ActiveSupport::JSON`, such as `unknown keyword: quirks_mode`|`json` 3.x with Active Support before 8.1.4. Upgrade Rails to 8.1.4 or newer, or pin `gem "json", "~> 2"`|
0 commit comments