What’s New in 0.4
Share action claims and JSON results across Rails workers with optional SQLite storage.
After reading this guide, you will know:
- How to opt into shared action storage without replacing the default store.
- Which concurrency and crash boundaries the SQLite adapter verifies.
Share action results
bin/rails generate openui:idempotency
bin/rails db:migrate
config.idempotency_store = OpenUI::Rails::Actions::Idempotency::ActiveRecordStore.new
SQLite stores claim ownership and JSON results across workers and restarts. The default remains process-local memory. Read Shared Idempotency Storage before configuring a database, result serialization, TTL, or cleanup.
Verify the boundary
Independent Ruby processes compete against one real SQLite database for both
new and expired keys. The tests also cover completed nil and false results,
request mismatch, actor and tenant isolation, process exit, and expired-writer
fencing. A reusable Minitest contract helps hosts test another adapter.
The support-desk reference now opts into this store while keeping its business receipt constraint. A crash after a business effect still needs that constraint; shared claims do not guarantee exactly-once effects.
Next Steps
- Upgrading - review opt-in migration steps.
- Reference Workflow - run the example from the built gem.