happenings 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 +6 -0
- data/{LICENSE.txt → LICENSE} +2 -1
- data/README.md +8 -8
- data/Rakefile +1 -1
- data/happenings.gemspec +1 -0
- data/lib/happenings/config.rb +0 -1
- data/lib/happenings/event.rb +2 -13
- data/lib/happenings/version.rb +9 -1
- metadata +34 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1e537ae388537bc29c33619c3111e967978b8e6
|
4
|
+
data.tar.gz: d68fbd0b09651bb1ec86606c0942a235c4e336a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5c845b87e8671250c6e46ba59f6b12e844561ff92628636d205109f3632b290019b306bcc88222fa1fb900fa5120708af994b8480ca218bb267c7e52a3b45c8
|
7
|
+
data.tar.gz: b698a50271b6724313f99e7fde8262c87b45fb1f5a80d2c82f0fe55ec1bb702dd074a5156f76b7ae8f5b7df59fbe095f7beb60c951e655c3348b34814df9c756
|
data/CHANGELOG
ADDED
data/{LICENSE.txt → LICENSE}
RENAMED
@@ -1,7 +1,8 @@
|
|
1
|
-
Copyright (c)
|
1
|
+
Copyright (c) Desmond Bowe
|
2
2
|
|
3
3
|
MIT License
|
4
4
|
|
5
|
+
|
5
6
|
Permission is hereby granted, free of charge, to any person obtaining
|
6
7
|
a copy of this software and associated documentation files (the
|
7
8
|
"Software"), to deal in the Software without restriction, including
|
data/README.md
CHANGED
@@ -21,7 +21,8 @@ Or install it yourself as:
|
|
21
21
|
Start by creating a Plain Old Ruby Object for your domain event and including the `Happening::Event` module.
|
22
22
|
You'll want to declare an initialize method that sets up any needed variables. Then, implement
|
23
23
|
a `#strategy` method and add your business logic there. This method will be called when your
|
24
|
-
Happening Event is run.
|
24
|
+
Happening Event is run and returns a generic success by default. `#strategy` must return with
|
25
|
+
`#success!` or `#failure!` or a `Happenings::OutcomeError` will be raised.
|
25
26
|
|
26
27
|
```
|
27
28
|
class ResetPasswordEvent
|
@@ -58,8 +59,6 @@ end
|
|
58
59
|
```
|
59
60
|
|
60
61
|
`#run!` will return Boolean `true` or `false` depending on the outcome of your strategy.
|
61
|
-
`#strategy` must return with `#success!` or `#failure!` or a `Happenings::OutcomeError` will
|
62
|
-
be raised.
|
63
62
|
|
64
63
|
## Success, Failure
|
65
64
|
`#success!` and `#failure!` will set a `succeeded?` attribute and set optional keys for
|
@@ -81,9 +80,12 @@ Publishing happens automatically when `#run!` is called, regardless of the strat
|
|
81
80
|
`payload`: The main package of the event. defaults to `{}`, but should
|
82
81
|
be overridden in your event to include useful info such as the user id, changed attributes, etc.
|
83
82
|
|
84
|
-
`routing_key`: The routable description of the event. Defaults to `#{
|
83
|
+
`routing_key`: The routable description of the event. Defaults to `#{event_name}.#{outcome}`, where outcome is either 'success' or 'failure'.
|
84
|
+
You can override this to use your own routing scheme, but you'll probably just want to augment it by
|
85
|
+
calling `"#{super}.my.details.here"`.
|
85
86
|
|
86
|
-
`event_name`: A machine-filterable version of the event. Defaults to the underscored class name.
|
87
|
+
`event_name`: A machine-filterable version of the event. Defaults to the underscored class name. Override
|
88
|
+
this to use your own naming scheme.
|
87
89
|
|
88
90
|
Here's an expanded version of our Reset Password example above that includes publishing features:
|
89
91
|
|
@@ -106,7 +108,6 @@ end
|
|
106
108
|
|
107
109
|
Happenings.configure do |config|
|
108
110
|
config.publisher = MyEventPublisher.new
|
109
|
-
config.app_name = 'my_app'
|
110
111
|
end
|
111
112
|
|
112
113
|
class ResetPasswordEvent
|
@@ -154,7 +155,7 @@ message.inspect # => { user: { id: 2 },
|
|
154
155
|
succeeded: true }
|
155
156
|
|
156
157
|
properties.inspect # => { message_id: <SecureRandom.uuid>,
|
157
|
-
routing_key: '
|
158
|
+
routing_key: 'reset_password_event.success',
|
158
159
|
timestamp: <Time.now.to_i> }
|
159
160
|
```
|
160
161
|
|
@@ -168,7 +169,6 @@ initializer such as `config/initializers/happenings.rb`:
|
|
168
169
|
Happenings.configure do |config|
|
169
170
|
config.logger = your_logger
|
170
171
|
config.publisher = your_publisher
|
171
|
-
config.app_name = 'my awesome app'
|
172
172
|
config.socks = 'black socks'
|
173
173
|
end
|
174
174
|
```
|
data/Rakefile
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require
|
1
|
+
require 'ritual'
|
data/happenings.gemspec
CHANGED
@@ -22,5 +22,6 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency 'bundler', '~> 1.5'
|
23
23
|
spec.add_development_dependency 'pry'
|
24
24
|
spec.add_development_dependency 'rake'
|
25
|
+
spec.add_development_dependency 'ritual', '~> 0.4.1'
|
25
26
|
spec.add_development_dependency 'rspec'
|
26
27
|
end
|
data/lib/happenings/config.rb
CHANGED
data/lib/happenings/event.rb
CHANGED
@@ -41,7 +41,7 @@ module Happenings
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def routing_key
|
44
|
-
[
|
44
|
+
[event_name, outcome].compact.join '.'
|
45
45
|
end
|
46
46
|
|
47
47
|
|
@@ -53,22 +53,11 @@ module Happenings
|
|
53
53
|
@reason = options[:reason]
|
54
54
|
end
|
55
55
|
|
56
|
-
# overload in subclass.
|
57
|
-
def routing_key_prefixes
|
58
|
-
|
59
|
-
end
|
60
|
-
|
61
|
-
def app_name
|
62
|
-
warn "#app_name is deprecated"
|
63
|
-
Happenings.config.app_name && Happenings.config.app_name.gsub(' ', '').underscore
|
64
|
-
end
|
65
|
-
|
66
56
|
def event_name
|
67
|
-
self.class.to_s.
|
57
|
+
self.class.to_s.underscore
|
68
58
|
end
|
69
59
|
|
70
60
|
def publish
|
71
|
-
# TODO: change to #reverse_merge because that puts the main payload first
|
72
61
|
Happenings.config.publisher.publish additional_info.merge(payload), properties
|
73
62
|
end
|
74
63
|
|
data/lib/happenings/version.rb
CHANGED
metadata
CHANGED
@@ -1,83 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: happenings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Desmond Bowe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.3'
|
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: '2.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.5'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: pry
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: ritual
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.4.1
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.4.1
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rspec
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- -
|
87
|
+
- - ">="
|
74
88
|
- !ruby/object:Gem::Version
|
75
89
|
version: '0'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- -
|
94
|
+
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
97
|
description: For use in applications where business domain events are first-class
|
@@ -88,10 +102,11 @@ executables: []
|
|
88
102
|
extensions: []
|
89
103
|
extra_rdoc_files: []
|
90
104
|
files:
|
91
|
-
- .gitignore
|
92
|
-
- .rspec
|
105
|
+
- ".gitignore"
|
106
|
+
- ".rspec"
|
107
|
+
- CHANGELOG
|
93
108
|
- Gemfile
|
94
|
-
- LICENSE
|
109
|
+
- LICENSE
|
95
110
|
- README.md
|
96
111
|
- Rakefile
|
97
112
|
- happenings.gemspec
|
@@ -115,17 +130,17 @@ require_paths:
|
|
115
130
|
- lib
|
116
131
|
required_ruby_version: !ruby/object:Gem::Requirement
|
117
132
|
requirements:
|
118
|
-
- -
|
133
|
+
- - ">="
|
119
134
|
- !ruby/object:Gem::Version
|
120
135
|
version: '0'
|
121
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
137
|
requirements:
|
123
|
-
- -
|
138
|
+
- - ">="
|
124
139
|
- !ruby/object:Gem::Version
|
125
140
|
version: '0'
|
126
141
|
requirements: []
|
127
142
|
rubyforge_project:
|
128
|
-
rubygems_version: 2.0
|
143
|
+
rubygems_version: 2.2.0
|
129
144
|
signing_key:
|
130
145
|
specification_version: 4
|
131
146
|
summary: Event-Driven Domain Scaffold
|
@@ -136,3 +151,4 @@ test_files:
|
|
136
151
|
- spec/support/event.rb
|
137
152
|
- spec/support/reset_password_event.rb
|
138
153
|
- spec/support/user.rb
|
154
|
+
has_rdoc:
|