resource_subscriber 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/resource_subscriber.rb +9 -2
- data/lib/resource_subscriber/configuration.rb +10 -0
- data/lib/resource_subscriber/message.rb +20 -4
- data/lib/resource_subscriber/publishable.rb +5 -4
- data/lib/resource_subscriber/publisher.rb +5 -14
- data/lib/resource_subscriber/version.rb +1 -1
- data/resource_subscriber.gemspec +0 -1
- metadata +3 -17
- data/lib/resource_subscriber/publisher_config.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4160073b08655c15bb99cf337f8ca84e7966a781
|
4
|
+
data.tar.gz: 94ce92345da4ae62c2cbded29c88f5b3e36c2535
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc3f96119816c0246cc07f85659608987dc54f7f1ab2581d0b6ee1b765a8231bf2dd55cce0b8c4b97a14edff6d2e582d7be3ba08ee678c97ceee8a6bb5aa8757
|
7
|
+
data.tar.gz: 38adff74a43d8c8350c5e5900672ff2f175ae9d5b62b3b4a64bda4c359023a7fa9e031d2a87df5baff369045f3b4772814cb9dc22505ddba5b44cd1bdba0bb7b
|
data/.gitignore
CHANGED
data/lib/resource_subscriber.rb
CHANGED
@@ -1,24 +1,31 @@
|
|
1
1
|
require "resource_subscriber/version"
|
2
2
|
require 'active_support/all'
|
3
3
|
require 'action_subscriber'
|
4
|
-
require 'trax_core'
|
5
4
|
|
6
5
|
module ResourceSubscriber
|
7
6
|
extend ::ActiveSupport::Autoload
|
8
7
|
|
9
8
|
autoload :AutoInject
|
10
9
|
autoload :Changes
|
10
|
+
autoload :Configuration
|
11
11
|
autoload :Message
|
12
12
|
autoload :Middlewares
|
13
13
|
autoload :Railtie
|
14
14
|
autoload :Resourceful
|
15
15
|
autoload :Publishable
|
16
16
|
autoload :Publisher
|
17
|
-
autoload :PublisherConfig
|
18
17
|
|
19
18
|
def self.load_railtie
|
20
19
|
::ResourceSubscriber::Railtie
|
21
20
|
end
|
22
21
|
|
22
|
+
def self.configuration
|
23
|
+
@configuration ||= ::ResourceSubscriber::Configuration.with_defaults
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.configure
|
27
|
+
yield(self.configuration) if block_given?
|
28
|
+
end
|
29
|
+
|
23
30
|
load_railtie if defined?(Rails)
|
24
31
|
end
|
@@ -1,7 +1,23 @@
|
|
1
1
|
module ResourceSubscriber
|
2
|
-
class Message
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
class Message
|
3
|
+
include ActiveModel::Serializers::JSON
|
4
|
+
|
5
|
+
attr_accessor :resource_type, :resource, :changes
|
6
|
+
|
7
|
+
def initialize(resource)
|
8
|
+
@resource_type = resource.class.base_class.name
|
9
|
+
@changes = resource.changes.blank? ? resource.previous_changes : resource.changes
|
10
|
+
@resource = resource.attributes
|
11
|
+
end
|
12
|
+
|
13
|
+
def attributes=(hash)
|
14
|
+
hash.each do |key, value|
|
15
|
+
send("#{key}=", value)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def attributes
|
20
|
+
instance_values
|
21
|
+
end
|
6
22
|
end
|
7
23
|
end
|
@@ -8,13 +8,14 @@ module ResourceSubscriber
|
|
8
8
|
after_commit :publish_destroyed, :on => :destroy
|
9
9
|
|
10
10
|
self.class_attribute :resource_publisher
|
11
|
-
|
11
|
+
|
12
|
+
configuration = ::ResourceSubscriber.configuration.deep_dup
|
13
|
+
self.resource_publisher = ::ResourceSubscriber::Publisher.new(model: self, config: configuration)
|
12
14
|
end
|
13
15
|
|
14
16
|
module ClassMethods
|
15
|
-
def publish_to(routing_key,
|
16
|
-
self.resource_publisher.
|
17
|
-
self.resource_publisher.config.routing_key = routing_key
|
17
|
+
def publish_to(routing_key, &block)
|
18
|
+
self.resource_publisher.publish_as(routing_key, &block)
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
@@ -4,23 +4,14 @@ module ResourceSubscriber
|
|
4
4
|
|
5
5
|
required_dependencies :model, :config
|
6
6
|
|
7
|
-
def resource_base_class_name
|
8
|
-
@resource_base_class_name ||= model.base_class.name
|
9
|
-
end
|
10
|
-
|
11
7
|
def publish_resource_message(action, resource)
|
12
|
-
message = ::ResourceSubscriber::Message.new(
|
13
|
-
|
14
|
-
:resource_type => resource_base_class_name,
|
15
|
-
:changes => resource.previous_changes
|
16
|
-
).to_json
|
17
|
-
|
18
|
-
::ActionSubscriber::Publisher.publish_async("#{self.config.routing_key}.#{action}", message, self.config.exchange, :content_type => 'application/json')
|
8
|
+
message = ::ResourceSubscriber::Message.new(resource)
|
9
|
+
::ActionSubscriber::Publisher.publish_async("#{self.config.routing_key}.#{action}", message.to_json, self.config.exchange, self.config.publishing_options)
|
19
10
|
end
|
20
11
|
|
21
|
-
def publish_as(routing_key
|
22
|
-
self.config
|
23
|
-
self.config
|
12
|
+
def publish_as(routing_key)
|
13
|
+
yield(self.config) if block_given?
|
14
|
+
self.config.routing_key = routing_key
|
24
15
|
end
|
25
16
|
end
|
26
17
|
end
|
data/resource_subscriber.gemspec
CHANGED
@@ -21,7 +21,6 @@ Gem::Specification.new do |spec|
|
|
21
21
|
|
22
22
|
spec.add_dependency "activesupport"
|
23
23
|
spec.add_dependency "action_subscriber"
|
24
|
-
spec.add_dependency "trax_core"
|
25
24
|
|
26
25
|
spec.add_development_dependency "bundler", "~> 1.11"
|
27
26
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resource_subscriber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Ayre
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: trax_core
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: bundler
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -113,13 +99,13 @@ files:
|
|
113
99
|
- lib/resource_subscriber.rb
|
114
100
|
- lib/resource_subscriber/auto_inject.rb
|
115
101
|
- lib/resource_subscriber/changes.rb
|
102
|
+
- lib/resource_subscriber/configuration.rb
|
116
103
|
- lib/resource_subscriber/message.rb
|
117
104
|
- lib/resource_subscriber/middlewares.rb
|
118
105
|
- lib/resource_subscriber/middlewares/has_changes.rb
|
119
106
|
- lib/resource_subscriber/middlewares/resourceful.rb
|
120
107
|
- lib/resource_subscriber/publishable.rb
|
121
108
|
- lib/resource_subscriber/publisher.rb
|
122
|
-
- lib/resource_subscriber/publisher_config.rb
|
123
109
|
- lib/resource_subscriber/railtie.rb
|
124
110
|
- lib/resource_subscriber/resourceful.rb
|
125
111
|
- lib/resource_subscriber/version.rb
|