solid_objects 0.16.1 → 0.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +100 -0
- data/README.md +9 -0
- data/Rakefile +5 -0
- data/app/models/solid_objects/message.rb +15 -0
- data/docs/agents.md +253 -0
- data/docs/architecture.md +16 -6
- data/docs/authorization.md +10 -3
- data/docs/observability.md +186 -0
- data/docs/operations.md +10 -8
- data/docs/realtime.md +4 -3
- data/docs/reminders.md +3 -1
- data/docs/roadmap.md +17 -1
- data/docs/security.md +2 -2
- data/docs/transmission.md +17 -6
- data/docs/virtual-actors.md +226 -0
- data/examples/quickstart/README.md +246 -0
- data/examples/quickstart/app/actors/ticket_sale.rb +22 -0
- data/examples/quickstart/smoke.rb +421 -0
- data/lib/solid_objects/activation.rb +6 -3
- data/lib/solid_objects/actor.rb +29 -2
- data/lib/solid_objects/actor_channel.rb +9 -1
- data/lib/solid_objects/actor_snapshot.rb +14 -8
- data/lib/solid_objects/broadcast_executor.rb +1 -0
- data/lib/solid_objects/client.rb +15 -1
- data/lib/solid_objects/configuration.rb +4 -0
- data/lib/solid_objects/database_adapters/sqlite.rb +7 -1
- data/lib/solid_objects/diagnostics.rb +83 -0
- data/lib/solid_objects/effect_executor.rb +4 -0
- data/lib/solid_objects/errors.rb +3 -0
- data/lib/solid_objects/executor.rb +34 -16
- data/lib/solid_objects/instrumentation.rb +22 -1
- data/lib/solid_objects/log_subscriber.rb +1 -1
- data/lib/solid_objects/mailbox.rb +5 -1
- data/lib/solid_objects/message_reference.rb +9 -9
- data/lib/solid_objects/observer_registry.rb +47 -0
- data/lib/solid_objects/payload_broadcast.rb +9 -8
- data/lib/solid_objects/reference.rb +19 -0
- data/lib/solid_objects/reminder_scheduler.rb +5 -0
- data/lib/solid_objects/state_snapshot.rb +1 -0
- data/lib/solid_objects/supervisor.rb +3 -6
- data/lib/solid_objects/synchronous_invocation.rb +1 -21
- data/lib/solid_objects/telemetry.rb +137 -0
- data/lib/solid_objects/version.rb +1 -1
- data/lib/solid_objects/wake_up_adapters/postgresql.rb +1 -2
- data/lib/solid_objects/wake_up_adapters/redis.rb +1 -2
- data/lib/solid_objects/worker.rb +1 -2
- data/lib/solid_objects.rb +10 -0
- data/sig/generated/lib/solid_objects/actor.rbs +9 -0
- data/sig/generated/lib/solid_objects/actor_channel.rbs +3 -0
- data/sig/generated/lib/solid_objects/actor_snapshot.rbs +7 -2
- data/sig/generated/lib/solid_objects/client.rbs +3 -0
- data/sig/generated/lib/solid_objects/configuration.rbs +7 -3
- data/sig/generated/lib/solid_objects/diagnostics.rbs +25 -0
- data/sig/generated/lib/solid_objects/errors.rbs +3 -0
- data/sig/generated/lib/solid_objects/executor.rbs +10 -2
- data/sig/generated/lib/solid_objects/message_reference.rbs +6 -6
- data/sig/generated/lib/solid_objects/observer_registry.rbs +29 -0
- data/sig/generated/lib/solid_objects/payload_broadcast.rbs +2 -4
- data/sig/generated/lib/solid_objects/reference.rbs +9 -0
- data/sig/generated/lib/solid_objects/synchronous_invocation.rbs +0 -3
- data/sig/generated/lib/solid_objects/telemetry.rbs +30 -0
- data/sig/generated/lib/solid_objects.rbs +3 -0
- data/sig/generated/models/solid_objects/message.rbs +3 -0
- data/sig/public/json_value.rbs +3 -0
- data/sig/public/telemetry.rbs +49 -0
- data/sig/support/framework.rbs +5 -0
- metadata +24 -9
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Generated from lib/solid_objects/telemetry.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module SolidObjects
|
|
4
|
+
module Telemetry
|
|
5
|
+
FIELDS: Array[String]
|
|
6
|
+
|
|
7
|
+
ALIASES: Hash[String, String]
|
|
8
|
+
|
|
9
|
+
# @rbs (Effect | Broadcast) -> void
|
|
10
|
+
def self.outbox: (Effect | Broadcast) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs (Symbol, Hash[Symbol, Object]) -> void
|
|
13
|
+
def self.emit: (Symbol, Hash[Symbol, Object]) -> void
|
|
14
|
+
|
|
15
|
+
# @rbs (event_observer, portable_event) -> void
|
|
16
|
+
def self.deliver: (event_observer, portable_event) -> void
|
|
17
|
+
|
|
18
|
+
# @rbs (Symbol, Hash[Symbol, Object]) -> portable_event
|
|
19
|
+
def self.event: (Symbol, Hash[Symbol, Object]) -> portable_event
|
|
20
|
+
|
|
21
|
+
# @rbs (Hash[Symbol, Object]) -> Hash[String, telemetry_value]
|
|
22
|
+
def self.safe_attributes: (Hash[Symbol, Object]) -> Hash[String, telemetry_value]
|
|
23
|
+
|
|
24
|
+
# @rbs (Effect | Broadcast) -> Hash[Symbol, String | Integer]
|
|
25
|
+
private def self.outbox_identity: (Effect | Broadcast) -> Hash[Symbol, String | Integer]
|
|
26
|
+
|
|
27
|
+
# @rbs (String, Exception) -> void
|
|
28
|
+
private def self.log_delivery_failure: (String, Exception) -> void
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -27,6 +27,9 @@ module SolidObjects
|
|
|
27
27
|
# @rbs (String | Symbol) { (Hash[String, untyped], CommitActionContext) -> untyped } -> Proc
|
|
28
28
|
def self.register_commit_action: (String | Symbol) { (Hash[String, untyped], CommitActionContext) -> untyped } -> Proc
|
|
29
29
|
|
|
30
|
+
# @rbs () -> ObserverRegistry
|
|
31
|
+
def self.observer_registry: () -> ObserverRegistry
|
|
32
|
+
|
|
30
33
|
# @rbs () -> Client
|
|
31
34
|
def self.client: () -> Client
|
|
32
35
|
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module SolidObjects
|
|
2
|
+
type telemetry_value = String | Integer | Float | bool | nil
|
|
3
|
+
|
|
4
|
+
type metric_sample = {
|
|
5
|
+
"name" => String,
|
|
6
|
+
"kind" => "counter" | "gauge" | "histogram",
|
|
7
|
+
"unit" => "1" | "ms",
|
|
8
|
+
"value" => Integer | Float,
|
|
9
|
+
"labels" => Hash[String, String]
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
type portable_event = {
|
|
13
|
+
"schemaVersion" => Integer,
|
|
14
|
+
"name" => String,
|
|
15
|
+
"occurredAt" => String,
|
|
16
|
+
"adapter" => String,
|
|
17
|
+
"actorType" => String?,
|
|
18
|
+
"actorId" => String?,
|
|
19
|
+
"incarnation" => String?,
|
|
20
|
+
"revision" => String?,
|
|
21
|
+
"messageId" => String?,
|
|
22
|
+
"attempt" => Integer,
|
|
23
|
+
"attributes" => Hash[String, telemetry_value],
|
|
24
|
+
"metrics" => Array[metric_sample]
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
type event_observer = ^(portable_event) -> void
|
|
28
|
+
|
|
29
|
+
type diagnostic_summary = {
|
|
30
|
+
"sampled" => Integer,
|
|
31
|
+
"truncated" => bool,
|
|
32
|
+
"oldestAgeMilliseconds" => Integer?
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
type actor_diagnostics = {
|
|
36
|
+
"actorType" => String,
|
|
37
|
+
"actorId" => String,
|
|
38
|
+
"incarnation" => String?,
|
|
39
|
+
"revision" => String?,
|
|
40
|
+
"adapter" => String,
|
|
41
|
+
"occurredAt" => String,
|
|
42
|
+
"limit" => Integer,
|
|
43
|
+
"mailbox" => diagnostic_summary,
|
|
44
|
+
"outbox" => diagnostic_summary,
|
|
45
|
+
"reminders" => diagnostic_summary,
|
|
46
|
+
"retries" => diagnostic_summary,
|
|
47
|
+
"recoveryFailures" => diagnostic_summary
|
|
48
|
+
}
|
|
49
|
+
end
|
data/sig/support/framework.rbs
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: solid_objects
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.17.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Lucas Carlson
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-10-
|
|
11
|
+
date: 2026-10-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: actioncable
|
|
@@ -276,10 +276,11 @@ dependencies:
|
|
|
276
276
|
- - ">="
|
|
277
277
|
- !ruby/object:Gem::Version
|
|
278
278
|
version: '2.7'
|
|
279
|
-
description: '
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
279
|
+
description: 'Solid Objects is a SQL-backed virtual actor library for Ruby on Rails,
|
|
280
|
+
with durable state, ordered operations, and automatic activation. It brings the
|
|
281
|
+
Cloudflare Durable Objects programming model to Rails: addressable objects with
|
|
282
|
+
ordered mailboxes, fenced activation, per-object reminders, transactional effects,
|
|
283
|
+
and reactive ERB. It runs on MySQL, PostgreSQL, and SQLite without Redis.'
|
|
283
284
|
email:
|
|
284
285
|
executables:
|
|
285
286
|
- solid_objects
|
|
@@ -350,6 +351,7 @@ files:
|
|
|
350
351
|
- docs/adr/0011-wake-up-strategy.md
|
|
351
352
|
- docs/adr/0012-not-active-jobs.md
|
|
352
353
|
- docs/adr/0013-database-adapters.md
|
|
354
|
+
- docs/agents.md
|
|
353
355
|
- docs/architecture.md
|
|
354
356
|
- docs/authorization.md
|
|
355
357
|
- docs/benchmarks.md
|
|
@@ -362,6 +364,7 @@ files:
|
|
|
362
364
|
- docs/implementation-plan.md
|
|
363
365
|
- docs/local-testing.md
|
|
364
366
|
- docs/migrating-existing-state.md
|
|
367
|
+
- docs/observability.md
|
|
365
368
|
- docs/operations.md
|
|
366
369
|
- docs/realtime.md
|
|
367
370
|
- docs/reminders.md
|
|
@@ -370,6 +373,7 @@ files:
|
|
|
370
373
|
- docs/security.md
|
|
371
374
|
- docs/state-migrations.md
|
|
372
375
|
- docs/transmission.md
|
|
376
|
+
- docs/virtual-actors.md
|
|
373
377
|
- examples/application/README.md
|
|
374
378
|
- examples/application/app/actors/chat_room_actor.rb
|
|
375
379
|
- examples/application/app/actors/shopping_cart_actor.rb
|
|
@@ -386,6 +390,9 @@ files:
|
|
|
386
390
|
- examples/at_least_once/demo.rb
|
|
387
391
|
- examples/at_least_once/effect_worker.rb
|
|
388
392
|
- examples/at_least_once/sink.rb
|
|
393
|
+
- examples/quickstart/README.md
|
|
394
|
+
- examples/quickstart/app/actors/ticket_sale.rb
|
|
395
|
+
- examples/quickstart/smoke.rb
|
|
389
396
|
- exe/solid_objects
|
|
390
397
|
- lib/generators/solid_objects/install_generator.rb
|
|
391
398
|
- lib/generators/solid_objects/templates/solid_objects.rb
|
|
@@ -425,6 +432,7 @@ files:
|
|
|
425
432
|
- lib/solid_objects/dead_letter_manager.rb
|
|
426
433
|
- lib/solid_objects/dead_letter_scope.rb
|
|
427
434
|
- lib/solid_objects/dead_row.rb
|
|
435
|
+
- lib/solid_objects/diagnostics.rb
|
|
428
436
|
- lib/solid_objects/doctor.rb
|
|
429
437
|
- lib/solid_objects/dom_identity.rb
|
|
430
438
|
- lib/solid_objects/effect_executor.rb
|
|
@@ -442,6 +450,7 @@ files:
|
|
|
442
450
|
- lib/solid_objects/mailbox.rb
|
|
443
451
|
- lib/solid_objects/message_pruner.rb
|
|
444
452
|
- lib/solid_objects/message_reference.rb
|
|
453
|
+
- lib/solid_objects/observer_registry.rb
|
|
445
454
|
- lib/solid_objects/operation_dispatcher.rb
|
|
446
455
|
- lib/solid_objects/outcome.rb
|
|
447
456
|
- lib/solid_objects/payload_broadcast.rb
|
|
@@ -464,6 +473,7 @@ files:
|
|
|
464
473
|
- lib/solid_objects/sync_deadline.rb
|
|
465
474
|
- lib/solid_objects/sync_diagnostics.rb
|
|
466
475
|
- lib/solid_objects/synchronous_invocation.rb
|
|
476
|
+
- lib/solid_objects/telemetry.rb
|
|
467
477
|
- lib/solid_objects/test_helper.rb
|
|
468
478
|
- lib/solid_objects/transmission.rb
|
|
469
479
|
- lib/solid_objects/turbo_stream_renderer.rb
|
|
@@ -527,6 +537,7 @@ files:
|
|
|
527
537
|
- sig/generated/lib/solid_objects/dead_letter_manager.rbs
|
|
528
538
|
- sig/generated/lib/solid_objects/dead_letter_scope.rbs
|
|
529
539
|
- sig/generated/lib/solid_objects/dead_row.rbs
|
|
540
|
+
- sig/generated/lib/solid_objects/diagnostics.rbs
|
|
530
541
|
- sig/generated/lib/solid_objects/doctor.rbs
|
|
531
542
|
- sig/generated/lib/solid_objects/dom_identity.rbs
|
|
532
543
|
- sig/generated/lib/solid_objects/effect_executor.rbs
|
|
@@ -544,6 +555,7 @@ files:
|
|
|
544
555
|
- sig/generated/lib/solid_objects/mailbox.rbs
|
|
545
556
|
- sig/generated/lib/solid_objects/message_pruner.rbs
|
|
546
557
|
- sig/generated/lib/solid_objects/message_reference.rbs
|
|
558
|
+
- sig/generated/lib/solid_objects/observer_registry.rbs
|
|
547
559
|
- sig/generated/lib/solid_objects/operation_dispatcher.rbs
|
|
548
560
|
- sig/generated/lib/solid_objects/outcome.rbs
|
|
549
561
|
- sig/generated/lib/solid_objects/payload_broadcast.rbs
|
|
@@ -566,6 +578,7 @@ files:
|
|
|
566
578
|
- sig/generated/lib/solid_objects/sync_deadline.rbs
|
|
567
579
|
- sig/generated/lib/solid_objects/sync_diagnostics.rbs
|
|
568
580
|
- sig/generated/lib/solid_objects/synchronous_invocation.rbs
|
|
581
|
+
- sig/generated/lib/solid_objects/telemetry.rbs
|
|
569
582
|
- sig/generated/lib/solid_objects/test_helper.rbs
|
|
570
583
|
- sig/generated/lib/solid_objects/transmission.rbs
|
|
571
584
|
- sig/generated/lib/solid_objects/turbo_stream_renderer.rbs
|
|
@@ -599,7 +612,9 @@ files:
|
|
|
599
612
|
- sig/generated/models/solid_objects/redrive.rbs
|
|
600
613
|
- sig/generated/models/solid_objects/reminder.rbs
|
|
601
614
|
- sig/public/effect_payload.rbs
|
|
615
|
+
- sig/public/json_value.rbs
|
|
602
616
|
- sig/public/reminder_payload.rbs
|
|
617
|
+
- sig/public/telemetry.rbs
|
|
603
618
|
- sig/support/framework.rbs
|
|
604
619
|
- web/assets/javascripts/application.js
|
|
605
620
|
- web/assets/javascripts/charts.js
|
|
@@ -621,7 +636,7 @@ files:
|
|
|
621
636
|
- web/views/message.erb
|
|
622
637
|
- web/views/processes.erb
|
|
623
638
|
- web/views/reminders.erb
|
|
624
|
-
homepage: https://solidobjects.dev
|
|
639
|
+
homepage: https://solidobjects.dev/ruby
|
|
625
640
|
licenses:
|
|
626
641
|
- MIT
|
|
627
642
|
metadata:
|
|
@@ -629,7 +644,7 @@ metadata:
|
|
|
629
644
|
bug_tracker_uri: https://github.com/cardmagic/solid-objects-ruby/issues
|
|
630
645
|
changelog_uri: https://github.com/cardmagic/solid-objects-ruby/blob/main/CHANGELOG.md
|
|
631
646
|
documentation_uri: https://github.com/cardmagic/solid-objects-ruby#readme
|
|
632
|
-
homepage_uri: https://solidobjects.dev
|
|
647
|
+
homepage_uri: https://solidobjects.dev/ruby
|
|
633
648
|
rubygems_mfa_required: 'true'
|
|
634
649
|
source_code_uri: https://github.com/cardmagic/solid-objects-ruby
|
|
635
650
|
post_install_message:
|
|
@@ -650,5 +665,5 @@ requirements: []
|
|
|
650
665
|
rubygems_version: 3.5.22
|
|
651
666
|
signing_key:
|
|
652
667
|
specification_version: 4
|
|
653
|
-
summary:
|
|
668
|
+
summary: SQL-backed virtual actors for Ruby on Rails
|
|
654
669
|
test_files: []
|