Skip to content

Commit 967eabc

Browse files
committed
feat: introduce Solid Objects
0 parents  commit 967eabc

222 files changed

Lines changed: 13375 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
sqlite:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v4
12+
- uses: ruby/setup-ruby@v1
13+
with:
14+
ruby-version: "3.3"
15+
bundler-cache: true
16+
- run: bundle exec rake
17+
18+
postgresql:
19+
runs-on: ubuntu-latest
20+
services:
21+
postgres:
22+
image: postgres:18
23+
env:
24+
POSTGRES_USER: solid_objects
25+
POSTGRES_PASSWORD: solid_objects
26+
POSTGRES_DB: solid_objects_test
27+
ports:
28+
- 5432:5432
29+
options: >-
30+
--health-cmd "pg_isready -U solid_objects"
31+
--health-interval 5s
32+
--health-timeout 5s
33+
--health-retries 10
34+
env:
35+
SOLID_OBJECTS_DATABASE_URL: postgresql://solid_objects:solid_objects@127.0.0.1:5432/solid_objects_test
36+
steps:
37+
- uses: actions/checkout@v4
38+
- uses: ruby/setup-ruby@v1
39+
with:
40+
ruby-version: "3.3"
41+
bundler-cache: true
42+
- run: bundle exec rake test
43+
44+
mysql:
45+
runs-on: ubuntu-latest
46+
services:
47+
mysql:
48+
image: mysql:8.4
49+
env:
50+
MYSQL_USER: solid_objects
51+
MYSQL_PASSWORD: solid_objects
52+
MYSQL_DATABASE: solid_objects_test
53+
MYSQL_ROOT_PASSWORD: root
54+
ports:
55+
- 3306:3306
56+
options: >-
57+
--health-cmd "mysqladmin ping -h 127.0.0.1 -uroot -proot"
58+
--health-interval 5s
59+
--health-timeout 5s
60+
--health-retries 20
61+
env:
62+
SOLID_OBJECTS_DATABASE_URL: mysql2://solid_objects:solid_objects@127.0.0.1:3306/solid_objects_test
63+
steps:
64+
- uses: actions/checkout@v4
65+
- uses: ruby/setup-ruby@v1
66+
with:
67+
ruby-version: "3.3"
68+
bundler-cache: true
69+
- run: bundle exec rake test
70+
71+
static:
72+
runs-on: ubuntu-latest
73+
steps:
74+
- uses: actions/checkout@v4
75+
- uses: ruby/setup-ruby@v1
76+
with:
77+
ruby-version: "3.3"
78+
bundler-cache: true
79+
- run: bundle exec rake standard rubocop rbs steep security

.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/.bundle
2+
/.ruby-lsp
3+
/coverage
4+
/pkg
5+
/test/dummy/log
6+
/test/dummy/storage
7+
/test/dummy/tmp
8+
/tmp
9+
/.claude
10+
/.codex

.rubocop.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Want to disable a check for a specific case? To disable checks inline:
2+
# http://docs.rubocop.org/en/latest/configuration/#disabling-cops-within-source-code
3+
4+
inherit_gem: { rubocop-rails-omakase: rubocop.yml }
5+
6+
AllCops:
7+
TargetRubyVersion: 3.3
8+
Exclude:
9+
- "**/*_schema.rb"
10+
- "lib/generators/solid_queue/update/templates/db/*"

.standard.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
ruby_version: 3.3
2+
ignore:
3+
- "**/*":
4+
- Layout/SpaceInsideArrayLiteralBrackets
5+
- Layout/SpaceInsideHashLiteralBraces

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Changelog
2+
3+
## 0.1.0 - 2026-08-06
4+
5+
- Introduce the Rails engine, actor API, and `solid_objects` executable.
6+
- Add ordered durable mailboxes with ready and claimed membership tables.
7+
- Add renewable activation leases with monotonically increasing fencing
8+
generations.
9+
- Add JSON actor state, versioned migrations, retries, and dead letters.
10+
- Add transactional effects, actor-to-actor messages, and durable reminders.
11+
- Add observable Turbo replacements through a durable broadcast outbox.
12+
- Support SQLite, PostgreSQL, and MySQL.

Gemfile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
source "https://rubygems.org"
2+
3+
gemspec
4+
5+
group :development, :test do
6+
gem "mysql2", ">= 0.5", require: false
7+
gem "pg", ">= 1.5", require: false
8+
gem "sqlite3", ">= 2.1", require: false
9+
end
10+
11+
group :development do
12+
gem "brakeman", require: false
13+
gem "rbs-inline", require: false
14+
gem "standard", require: false
15+
gem "steep", require: false
16+
end

0 commit comments

Comments
 (0)