happenings 0.2.0 → 1.0.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/README.md +5 -9
- data/happenings.gemspec +1 -2
- data/lib/happenings/event.rb +10 -3
- data/lib/happenings/version.rb +1 -1
- metadata +4 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b2a46401f49eac6f78fa52f0c96da11306e57732
|
4
|
+
data.tar.gz: 7aa05d405dde4af3cf28d9e93df56525dd087012
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a32d940f64959958351ca3b862b4c185698c515d9e27018c7ca81de56e0f6575818e2adf25975b4b85e237015b87abcfcb24b9d42bfe00228848acef87e8de3c
|
7
|
+
data.tar.gz: 141a7126c6bc092b724a380db5ead8866dcbff0fc0c76bcd38b50aa0a0124c9b6a8b4ec1988349e4e38179ef50e2ff316b84c92feac7de553d175583abdee0b5
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== 1.0.0 2014-10-30
|
2
|
+
|
3
|
+
* [breaking change] set default event name to the class name, without
|
4
|
+
underscores. This removes a dependency on ActiveSupport. To retain backward
|
5
|
+
compatibility, call #underscore on your even_name.
|
6
|
+
|
1
7
|
== 0.2.0 2014-05-06
|
2
8
|
|
3
9
|
* Removed #app_name method that forced users to declare one. You can always
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Basic Usage
|
20
20
|
|
21
|
-
Start by creating a Plain Old Ruby Object for your domain event and including the `
|
21
|
+
Start by creating a Plain Old Ruby Object for your domain event and including the `Happenings::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
24
|
Happening Event is run and returns a generic success by default. `#strategy` must return with
|
@@ -61,7 +61,7 @@ end
|
|
61
61
|
`#run!` will return Boolean `true` or `false` depending on the outcome of your strategy.
|
62
62
|
|
63
63
|
## Success, Failure
|
64
|
-
`#success!` and `#failure!` will set a `succeeded?` attribute and
|
64
|
+
`#success!` and `#failure!` will set a `succeeded?` attribute and optional keys for
|
65
65
|
`message` and `reason` attributes. `message` is meant for human-readable messages,
|
66
66
|
such as "Password reset failed", whereas `reason` is designed for machine-sortable
|
67
67
|
filtering, such as "confirmation\_mismatch". A `duration` attribute is also recorded.
|
@@ -84,7 +84,7 @@ be overridden in your event to include useful info such as the user id, changed
|
|
84
84
|
You can override this to use your own routing scheme, but you'll probably just want to augment it by
|
85
85
|
calling `"#{super}.my.details.here"`.
|
86
86
|
|
87
|
-
`event_name`: A machine-filterable version of the event. Defaults to the
|
87
|
+
`event_name`: A machine-filterable version of the event. Defaults to the event's class name. Override
|
88
88
|
this to use your own naming scheme.
|
89
89
|
|
90
90
|
Here's an expanded version of our Reset Password example above that includes publishing features:
|
@@ -148,14 +148,14 @@ end
|
|
148
148
|
If the event is successful, `MyEventPublisher#publish` will receive the following parameters:
|
149
149
|
```
|
150
150
|
message.inspect # => { user: { id: 2 },
|
151
|
-
event: '
|
151
|
+
event: 'ResetPasswordEvent',
|
152
152
|
reason: nil,
|
153
153
|
message: 'Password reset successfully',
|
154
154
|
duration: '0.0015',
|
155
155
|
succeeded: true }
|
156
156
|
|
157
157
|
properties.inspect # => { message_id: <SecureRandom.uuid>,
|
158
|
-
routing_key: '
|
158
|
+
routing_key: 'ResetPasswordEvent.success',
|
159
159
|
timestamp: <Time.now.to_i> }
|
160
160
|
```
|
161
161
|
|
@@ -173,10 +173,6 @@ Happenings.configure do |config|
|
|
173
173
|
end
|
174
174
|
```
|
175
175
|
|
176
|
-
## Requirements
|
177
|
-
|
178
|
-
* ActiveSupport (>= 2.3)
|
179
|
-
|
180
176
|
## Contributing
|
181
177
|
|
182
178
|
1. Fork it ( http://github.com/desmondmonster/happenings/fork )
|
data/happenings.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "happenings"
|
8
8
|
spec.version = Happenings::VERSION
|
9
9
|
spec.authors = ["Desmond Bowe"]
|
10
|
-
spec.email = ["
|
10
|
+
spec.email = ["desmond@crevalle.io"]
|
11
11
|
spec.summary = %q{Event-Driven Domain Scaffold}
|
12
12
|
spec.description = %q{For use in applications where business domain events are first-class citizens}
|
13
13
|
spec.homepage = "https://github.com/desmondmonster/happenings"
|
@@ -18,7 +18,6 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_dependency 'activesupport', '>= 2.3'
|
22
21
|
spec.add_development_dependency 'bundler', '~> 1.5'
|
23
22
|
spec.add_development_dependency 'pry'
|
24
23
|
spec.add_development_dependency 'rake'
|
data/lib/happenings/event.rb
CHANGED
@@ -3,8 +3,15 @@ module Happenings
|
|
3
3
|
class OutcomeError < StandardError; end
|
4
4
|
|
5
5
|
module Event
|
6
|
+
module ClassMethods
|
7
|
+
def self.run! *args
|
8
|
+
new(*args).tap &:run!
|
9
|
+
end
|
10
|
+
end
|
6
11
|
|
7
|
-
|
12
|
+
def self.included base
|
13
|
+
base.extend ClassMethods
|
14
|
+
end
|
8
15
|
|
9
16
|
attr_reader :duration, :message, :reason, :succeeded
|
10
17
|
|
@@ -13,7 +20,7 @@ module Happenings
|
|
13
20
|
strategy
|
14
21
|
end
|
15
22
|
|
16
|
-
raise OutcomeError.new
|
23
|
+
raise OutcomeError.new "no outcome specified for #{event_name}" if no_outcome_specified?
|
17
24
|
|
18
25
|
publish
|
19
26
|
|
@@ -54,7 +61,7 @@ module Happenings
|
|
54
61
|
end
|
55
62
|
|
56
63
|
def event_name
|
57
|
-
self.class.to_s
|
64
|
+
self.class.to_s
|
58
65
|
end
|
59
66
|
|
60
67
|
def publish
|
data/lib/happenings/version.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: happenings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.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-
|
11
|
+
date: 2014-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: activesupport
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '2.3'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '2.3'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: bundler
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,7 +83,7 @@ dependencies:
|
|
97
83
|
description: For use in applications where business domain events are first-class
|
98
84
|
citizens
|
99
85
|
email:
|
100
|
-
-
|
86
|
+
- desmond@crevalle.io
|
101
87
|
executables: []
|
102
88
|
extensions: []
|
103
89
|
extra_rdoc_files: []
|
@@ -140,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
126
|
version: '0'
|
141
127
|
requirements: []
|
142
128
|
rubyforge_project:
|
143
|
-
rubygems_version: 2.
|
129
|
+
rubygems_version: 2.4.1
|
144
130
|
signing_key:
|
145
131
|
specification_version: 4
|
146
132
|
summary: Event-Driven Domain Scaffold
|
@@ -151,4 +137,3 @@ test_files:
|
|
151
137
|
- spec/support/event.rb
|
152
138
|
- spec/support/reset_password_event.rb
|
153
139
|
- spec/support/user.rb
|
154
|
-
has_rdoc:
|