active_outbox 0.0.0 → 0.0.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/README.md +1 -1
- data/bin/outbox +6 -0
- data/lib/active_outbox/base.rb +2 -0
- data/lib/active_outbox/configuration.rb +9 -0
- data/lib/active_outbox/generators/outbox_generator.rb +14 -0
- data/lib/active_outbox/generators/templates/migration.rb +3 -3
- data/lib/active_outbox/outboxable.rb +11 -1
- data/lib/active_outbox.rb +24 -0
- metadata +12 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 114be65b9ebb769c48aebe0079432a121fb2f71b45ae912668eec8b0416a1761
|
|
4
|
+
data.tar.gz: c0d9b1e730354d515c7ac9096369cce22774cc5b3ad5d9c77a0d5ace01d39e39
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 94d42500e7272e0cefee12db79054308013edf4afdb6133a1f9a49f011e68596bbc005d4e2419d383dfb7f451558d1cd8bf63ae382a7a54d214c5847b0f6ff18
|
|
7
|
+
data.tar.gz: e8b82acd7157417084c076f307da90a9138a6f424c0fae86f93190613dd47e409dde33407ab0397fc2b8464ccbfef67cb699147d52df7e1d263846dd143c2550
|
data/README.md
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Active Outbox
|
|
2
2
|
A Transactional Outbox implementation for ActiveRecord
|
data/bin/outbox
ADDED
data/lib/active_outbox/base.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'rails'
|
|
2
|
+
require 'rails/generators'
|
|
1
3
|
require 'rails/generators/active_record'
|
|
2
4
|
|
|
3
5
|
class OutboxGenerator < ActiveRecord::Generators::Base
|
|
@@ -22,4 +24,16 @@ class OutboxGenerator < ActiveRecord::Generators::Base
|
|
|
22
24
|
def table_name
|
|
23
25
|
"#{name}_outboxes"
|
|
24
26
|
end
|
|
27
|
+
|
|
28
|
+
def uuid_type
|
|
29
|
+
postgres? ? 'uuid' : 'string'
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def json_type
|
|
33
|
+
postgres? ? 'jsonb' : 'string'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def postgres?
|
|
37
|
+
ActiveRecord::Base.connection.adapter_name.downcase == 'postgresql'
|
|
38
|
+
end
|
|
25
39
|
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
class OutboxCreate<%= table_name.camelize.singularize %> < ActiveRecord::Migration<%= migration_version %>
|
|
2
2
|
def change
|
|
3
3
|
create_table :<%= table_name %> do |t|
|
|
4
|
-
t
|
|
4
|
+
t.<%= uuid_type %> :identifier, null: false, index: { unique: true }
|
|
5
5
|
t.string :event, null: false
|
|
6
|
-
t
|
|
6
|
+
t.<%= json_type %> :payload
|
|
7
7
|
t.string :aggregate, null: false
|
|
8
|
-
t
|
|
8
|
+
t.<%= uuid_type %> :aggregate_identifier, null: false, index: true
|
|
9
9
|
|
|
10
10
|
t.timestamps
|
|
11
11
|
end
|
|
@@ -60,7 +60,7 @@ module ActiveOutbox
|
|
|
60
60
|
aggregate_identifier: try(:identifier) || id,
|
|
61
61
|
event: @outbox_event || event_name,
|
|
62
62
|
identifier: SecureRandom.uuid,
|
|
63
|
-
payload:
|
|
63
|
+
payload: formatted_payload(action)
|
|
64
64
|
)
|
|
65
65
|
@outbox_event = nil
|
|
66
66
|
|
|
@@ -73,6 +73,16 @@ module ActiveOutbox
|
|
|
73
73
|
outbox.save!
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
+
def formatted_payload(action)
|
|
77
|
+
payload = payload(action)
|
|
78
|
+
case ActiveRecord::Base.connection.adapter_name.downcase
|
|
79
|
+
when 'postgresql'
|
|
80
|
+
payload
|
|
81
|
+
else
|
|
82
|
+
payload.to_json
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
76
86
|
def payload(action)
|
|
77
87
|
payload = { before: nil, after: nil }
|
|
78
88
|
case action
|
data/lib/active_outbox.rb
CHANGED
|
@@ -1,2 +1,26 @@
|
|
|
1
1
|
require 'active_outbox/base'
|
|
2
|
+
require 'active_outbox/configuration'
|
|
2
3
|
require 'active_outbox/outboxable'
|
|
4
|
+
require 'active_outbox/generators/outbox_generator'
|
|
5
|
+
|
|
6
|
+
module ActiveOutbox
|
|
7
|
+
class << self
|
|
8
|
+
attr_accessor :configuration
|
|
9
|
+
|
|
10
|
+
def configuration
|
|
11
|
+
@configuration ||= Configuration.new
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def reset
|
|
15
|
+
@configuration = Configuration.new
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def configure
|
|
19
|
+
yield(configuration)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def configuration
|
|
24
|
+
@configuration ||= Configuration.new
|
|
25
|
+
end
|
|
26
|
+
end
|
metadata
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: active_outbox
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Guillermo Aguirre
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-06-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '7.0'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- - "
|
|
24
|
+
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '7.0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
@@ -124,13 +124,16 @@ dependencies:
|
|
|
124
124
|
version: 11.1.3
|
|
125
125
|
description: A Transactional Outbox implementation for ActiveRecord
|
|
126
126
|
email: guillermoaguirre1@gmail.com
|
|
127
|
-
executables:
|
|
127
|
+
executables:
|
|
128
|
+
- outbox
|
|
128
129
|
extensions: []
|
|
129
130
|
extra_rdoc_files: []
|
|
130
131
|
files:
|
|
131
132
|
- README.md
|
|
133
|
+
- bin/outbox
|
|
132
134
|
- lib/active_outbox.rb
|
|
133
135
|
- lib/active_outbox/base.rb
|
|
136
|
+
- lib/active_outbox/configuration.rb
|
|
134
137
|
- lib/active_outbox/generators/outbox_generator.rb
|
|
135
138
|
- lib/active_outbox/generators/templates/migration.rb
|
|
136
139
|
- lib/active_outbox/outboxable.rb
|
|
@@ -138,7 +141,7 @@ homepage: https://rubygems.org/gems/active_outbox
|
|
|
138
141
|
licenses:
|
|
139
142
|
- MIT
|
|
140
143
|
metadata: {}
|
|
141
|
-
post_install_message:
|
|
144
|
+
post_install_message:
|
|
142
145
|
rdoc_options: []
|
|
143
146
|
require_paths:
|
|
144
147
|
- lib
|
|
@@ -153,8 +156,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
153
156
|
- !ruby/object:Gem::Version
|
|
154
157
|
version: '0'
|
|
155
158
|
requirements: []
|
|
156
|
-
rubygems_version: 3.
|
|
157
|
-
signing_key:
|
|
159
|
+
rubygems_version: 3.1.6
|
|
160
|
+
signing_key:
|
|
158
161
|
specification_version: 4
|
|
159
162
|
summary: ActiveOutbox
|
|
160
163
|
test_files: []
|