event_engine 0.1.0 → 0.2.0
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 +55 -0
- data/README.md +210 -399
- data/Rakefile +0 -1
- data/lib/event_engine/catalog_entry.rb +84 -0
- data/lib/event_engine/configuration.rb +9 -9
- data/lib/event_engine/definition_publisher.rb +22 -0
- data/lib/event_engine/event.rb +0 -8
- data/lib/event_engine/event_builder.rb +0 -8
- data/lib/event_engine/event_schema.rb +32 -57
- data/lib/event_engine/event_schema_json_loader.rb +19 -0
- data/lib/event_engine/handler_registry.rb +4 -4
- data/lib/event_engine/invalid_rules_error.rb +8 -0
- data/lib/event_engine/processing_rules.rb +39 -0
- data/lib/event_engine/processor_registry.rb +19 -0
- data/lib/event_engine/processor_resolver.rb +16 -0
- data/lib/event_engine/railtie.rb +54 -4
- data/lib/event_engine/rules_file.rb +14 -0
- data/lib/event_engine/schema_catalog_builder.rb +18 -0
- data/lib/event_engine/schema_registry.rb +7 -58
- data/lib/event_engine/unregistered_processor_error.rb +8 -0
- data/lib/event_engine/unroutable_event_error.rb +9 -0
- data/lib/event_engine/unrouted_events_error.rb +9 -0
- data/lib/event_engine/version.rb +1 -1
- data/lib/event_engine.rb +117 -123
- data/lib/tasks/event_engine_catalog.rake +15 -6
- data/lib/tasks/event_engine_rules.rake +10 -0
- data/the_local/agents/event_engine-develop.md +154 -0
- data/the_local/agents/event_engine-info.md +82 -0
- data/the_local/agents/event_engine-install.md +99 -0
- data/the_local/interface.yml +27 -0
- metadata +45 -48
- data/app/assets/config/event_engine_manifest.js +0 -1
- data/app/assets/stylesheets/event_engine/application.css +0 -15
- data/app/controllers/event_engine/application_controller.rb +0 -4
- data/app/helpers/event_engine/application_helper.rb +0 -4
- data/app/jobs/event_engine/application_job.rb +0 -4
- data/app/mailers/event_engine/application_mailer.rb +0 -6
- data/app/models/event_engine/application_record.rb +0 -5
- data/app/views/layouts/event_engine/application.html.erb +0 -15
- data/config/routes.rb +0 -2
- data/lib/event_engine/definition_loader.rb +0 -26
- data/lib/event_engine/dsl_compiler.rb +0 -50
- data/lib/event_engine/engine.rb +0 -56
- data/lib/event_engine/event_definition/inputs.rb +0 -43
- data/lib/event_engine/event_definition/payloads.rb +0 -47
- data/lib/event_engine/event_definition/schemas.rb +0 -158
- data/lib/event_engine/event_definition/validation.rb +0 -18
- data/lib/event_engine/event_definition.rb +0 -76
- data/lib/event_engine/event_schema_dumper.rb +0 -13
- data/lib/event_engine/event_schema_loader.rb +0 -37
- data/lib/event_engine/event_schema_merger.rb +0 -62
- data/lib/event_engine/event_schema_writer.rb +0 -47
- data/lib/event_engine/lifecycle_definition.rb +0 -86
- data/lib/event_engine/process_type.rb +0 -26
- data/lib/event_engine/reference/guide.md +0 -129
- data/lib/event_engine/reference.rb +0 -16
- data/lib/event_engine/schema_catalog.rb +0 -50
- data/lib/event_engine/schema_compatibility.rb +0 -50
- data/lib/event_engine/schema_diff.rb +0 -35
- data/lib/event_engine/schema_drift_guard.rb +0 -38
- data/lib/event_engine/subject_registry.rb +0 -40
- data/lib/event_engine/the_local/agents/event_engine-develop.md +0 -142
- data/lib/event_engine/the_local/agents/event_engine-info.md +0 -140
- data/lib/event_engine/the_local/agents/event_engine-install.md +0 -140
- data/lib/event_engine/the_local.rb +0 -55
- data/lib/generators/event_engine/install_generator.rb +0 -31
- data/lib/generators/event_engine/templates/event_schema.rb +0 -10
- data/lib/generators/event_engine/templates/initializer.rb +0 -4
- data/lib/tasks/event_engine_schema.rake +0 -82
- data/lib/tasks/event_engine_schema_check.rake +0 -20
- data/lib/tasks/event_engine_tasks.rake +0 -4
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
require "event_engine/reference"
|
|
2
|
-
|
|
3
|
-
module EventEngine
|
|
4
|
-
module Companion
|
|
5
|
-
def self.register!
|
|
6
|
-
TheLocal.register("event_engine",
|
|
7
|
-
scope: "events — defining EventEngine events, emitting, and the schema workflow",
|
|
8
|
-
agents_dir: File.expand_path("the_local/agents", __dir__)) do |c|
|
|
9
|
-
c.agent "info",
|
|
10
|
-
description: "Use to learn what EventEngine offers — the event-definition DSL, " \
|
|
11
|
-
"process_type, emitting, handlers, and the schema workflow.",
|
|
12
|
-
tools: "Read",
|
|
13
|
-
knowledge: Reference.content,
|
|
14
|
-
body: <<~BODY.chomp
|
|
15
|
-
You explain how EventEngine works and how to use it, answering only from the
|
|
16
|
-
reference: defining events, process_type routing, emitting through the generated
|
|
17
|
-
helpers, registering handlers, and the schema dump/check workflow. You make no
|
|
18
|
-
changes.
|
|
19
|
-
BODY
|
|
20
|
-
|
|
21
|
-
c.agent "install",
|
|
22
|
-
description: "Use to add EventEngine to a Rails app and set it up correctly.",
|
|
23
|
-
tools: "Bash, Read, Edit",
|
|
24
|
-
knowledge: Reference.content,
|
|
25
|
-
body: <<~BODY.chomp
|
|
26
|
-
You install EventEngine following the reference's install section exactly: add the
|
|
27
|
-
gem, bundle, run `bin/rails g event_engine:install`, set the logger in the
|
|
28
|
-
initializer, then dump and commit db/event_schema.rb. You do not invent steps, and
|
|
29
|
-
you do not set up the separate delivery/store/subscribers gems unless asked.
|
|
30
|
-
BODY
|
|
31
|
-
|
|
32
|
-
c.agent "develop",
|
|
33
|
-
description: "Use PROACTIVELY for any EventEngine work — defining events, choosing " \
|
|
34
|
-
"process_type, emitting, and keeping the committed schema in sync. MUST BE USED " \
|
|
35
|
-
"instead of hand-writing event plumbing.",
|
|
36
|
-
tools: "Read, Write, Edit, Grep",
|
|
37
|
-
knowledge: Reference.content,
|
|
38
|
-
body: <<~BODY.chomp
|
|
39
|
-
You build EventEngine events following the reference's conventions: one
|
|
40
|
-
EventDefinition class per event in app/event_definitions/, payloads composed from
|
|
41
|
-
inputs, process_type set explicitly, emitted through the generated
|
|
42
|
-
EventEngine.<event_name> helpers. After any definition change you run
|
|
43
|
-
`bin/rails event_engine:schema:dump` and commit db/event_schema.rb, keeping
|
|
44
|
-
event_engine:schema_check green. You keep handlers idempotent.
|
|
45
|
-
BODY
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
begin
|
|
52
|
-
require "the_local"
|
|
53
|
-
EventEngine::Companion.register!
|
|
54
|
-
rescue LoadError
|
|
55
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
module EventEngine
|
|
2
|
-
module Generators
|
|
3
|
-
class InstallGenerator < Rails::Generators::Base
|
|
4
|
-
source_root File.expand_path("templates", __dir__)
|
|
5
|
-
|
|
6
|
-
desc "Install EventEngine (schema file, initializer, migrations)"
|
|
7
|
-
|
|
8
|
-
def create_event_schema
|
|
9
|
-
template "event_schema.rb", "db/event_schema.rb"
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def create_initializer
|
|
13
|
-
template "initializer.rb", "config/initializers/event_engine.rb"
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def print_next_steps
|
|
17
|
-
say <<~MSG
|
|
18
|
-
|
|
19
|
-
EventEngine installed.
|
|
20
|
-
|
|
21
|
-
Next steps:
|
|
22
|
-
1. Define events in app/event_definitions/
|
|
23
|
-
2. Run: bin/rails event_engine:schema:dump
|
|
24
|
-
3. Commit db/event_schema.rb
|
|
25
|
-
4. Configure transport in config/initializers/event_engine.rb
|
|
26
|
-
|
|
27
|
-
MSG
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
namespace :event_engine do
|
|
2
|
-
desc "Fail if event schema DSL has drifted from db/event_schema.rb"
|
|
3
|
-
task schema: :environment do
|
|
4
|
-
EventEngine::DefinitionLoader.ensure_loaded!
|
|
5
|
-
|
|
6
|
-
descendants = EventEngine::EventDefinition.descendants
|
|
7
|
-
|
|
8
|
-
if descendants.empty?
|
|
9
|
-
raise <<~MSG
|
|
10
|
-
EventEngine found no EventDefinitions.
|
|
11
|
-
|
|
12
|
-
Expected definitions to be loaded during eager load.
|
|
13
|
-
Ensure they live in an eager-load path (e.g. app/event_definitions).
|
|
14
|
-
MSG
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
EventEngine::SchemaDriftGuard.check!(
|
|
18
|
-
schema_path: Rails.root.join("db/event_schema.rb"),
|
|
19
|
-
definitions: descendants
|
|
20
|
-
)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
namespace :schema do
|
|
24
|
-
desc "Regenerate event_schema.rb from EventDefinitions"
|
|
25
|
-
task dump: :environment do
|
|
26
|
-
EventEngine::DefinitionLoader.ensure_loaded!
|
|
27
|
-
|
|
28
|
-
descendants = EventEngine::EventDefinition.descendants
|
|
29
|
-
|
|
30
|
-
if descendants.empty?
|
|
31
|
-
raise <<~MSG
|
|
32
|
-
EventEngine found no EventDefinitions.
|
|
33
|
-
|
|
34
|
-
Expected definitions to be loaded during eager load.
|
|
35
|
-
Ensure they live in an eager-load path (e.g. app/event_definitions).
|
|
36
|
-
MSG
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
path = Rails.root.join("db/event_schema.rb")
|
|
40
|
-
|
|
41
|
-
EventEngine::EventSchemaDumper.dump!(
|
|
42
|
-
definitions: descendants,
|
|
43
|
-
path: path
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
puts "Dumping EventEngine schema to #{path}"
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
desc "Fail with a readable diff if definitions have drifted from db/event_schema.rb"
|
|
50
|
-
task verify: :environment do
|
|
51
|
-
EventEngine::DefinitionLoader.ensure_loaded!
|
|
52
|
-
|
|
53
|
-
descendants = EventEngine::EventDefinition.descendants
|
|
54
|
-
|
|
55
|
-
if descendants.empty?
|
|
56
|
-
raise <<~MSG
|
|
57
|
-
EventEngine found no EventDefinitions.
|
|
58
|
-
|
|
59
|
-
Expected definitions to be loaded during eager load.
|
|
60
|
-
Ensure they live in an eager-load path (e.g. app/event_definitions).
|
|
61
|
-
MSG
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
EventEngine::SchemaDriftGuard.check!(
|
|
65
|
-
schema_path: Rails.root.join("db/event_schema.rb"),
|
|
66
|
-
definitions: descendants
|
|
67
|
-
)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
desc "Fail if new definitions break compatibility with the committed schema"
|
|
71
|
-
task compatibility: :environment do
|
|
72
|
-
EventEngine::DefinitionLoader.ensure_loaded!
|
|
73
|
-
|
|
74
|
-
violations = EventEngine::SchemaCompatibility.violations(
|
|
75
|
-
old_registry: EventEngine.file_schema_registry,
|
|
76
|
-
new_registry: EventEngine.compiled_schema_registry
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
raise "Breaking schema changes:\n#{violations.join("\n")}" if violations.any?
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
namespace :event_engine do
|
|
2
|
-
desc "Fail if event schema DSL has drifted from db/event_schema.rb"
|
|
3
|
-
task schema_check: :environment do
|
|
4
|
-
compiled = EventEngine.compiled_schema_registry
|
|
5
|
-
file = EventEngine.file_schema_registry
|
|
6
|
-
|
|
7
|
-
if EventEngine::EventSchemaMerger.changed?(compiled, file)
|
|
8
|
-
raise <<~MSG
|
|
9
|
-
Schema drift detected.
|
|
10
|
-
|
|
11
|
-
The compiled EventDefinitions differ from db/event_schema.rb.
|
|
12
|
-
|
|
13
|
-
Run:
|
|
14
|
-
bin/rails event_engine:schema:dump
|
|
15
|
-
|
|
16
|
-
Then commit the updated schema file.
|
|
17
|
-
MSG
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|