happenings 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ddc6f910e11bfdc46fc02009443d8d946930daa7
4
- data.tar.gz: afdf5f4d4c91fee91648729afac51447a305e157
3
+ metadata.gz: e1e537ae388537bc29c33619c3111e967978b8e6
4
+ data.tar.gz: d68fbd0b09651bb1ec86606c0942a235c4e336a0
5
5
  SHA512:
6
- metadata.gz: 6abb8f430a2b00daea4a13802c62207a42baf14f2835b9345be1b19f804f0d75723c63cf63eb83bf2b0302a2a630c14f656807d04f88a2a56b0cc8cc41d4cb5f
7
- data.tar.gz: 99ecdb60c6c6d5a644149baf0465076ac15cdfc4d6138d2e00144b56da6547698f5d4c9ca616fc888a8cd02e47e0f68a55d32de02f162bac7aa73d8ab7abd56f
6
+ metadata.gz: a5c845b87e8671250c6e46ba59f6b12e844561ff92628636d205109f3632b290019b306bcc88222fa1fb900fa5120708af994b8480ca218bb267c7e52a3b45c8
7
+ data.tar.gz: b698a50271b6724313f99e7fde8262c87b45fb1f5a80d2c82f0fe55ec1bb702dd074a5156f76b7ae8f5b7df59fbe095f7beb60c951e655c3348b34814df9c756
data/CHANGELOG ADDED
@@ -0,0 +1,6 @@
1
+ == 0.2.0 2014-05-06
2
+
3
+ * Removed #app_name method that forced users to declare one. You can always
4
+ add it back by subclassing the event_name.
5
+ * Retain the module nesting of event name
6
+
@@ -1,7 +1,8 @@
1
- Copyright (c) 2014 Desmond Bowe
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 `#{app_name}.#{event_name}.#{outcome}`, where outcome is either 'success' or 'failure'.
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: 'my_app.reset_password_event.success',
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 "bundler/gem_tasks"
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
@@ -9,7 +9,6 @@ module Happenings
9
9
  def set_default_attributes
10
10
  self.logger = default_logger
11
11
  self.publisher = default_publisher
12
- self.app_name = nil
13
12
  end
14
13
 
15
14
  def method_missing method, *args
@@ -41,7 +41,7 @@ module Happenings
41
41
  end
42
42
 
43
43
  def routing_key
44
- [routing_key_prefixes, event_name, outcome].compact.join '.'
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.split('::').last.underscore
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
 
@@ -1,3 +1,11 @@
1
1
  module Happenings
2
- VERSION = "0.1.0"
2
+ VERSION = [0, 2, 0]
3
+
4
+ class << VERSION
5
+ include Comparable
6
+
7
+ def to_s
8
+ join('.')
9
+ end
10
+ end
3
11
  end
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.1.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-05 00:00:00.000000000 Z
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.txt
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.3
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: