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 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: