active_pubsub 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/active_pubsub.gemspec +1 -0
- data/lib/active_pubsub/publish_with_serializer.rb +7 -3
- data/lib/active_pubsub/publishable.rb +4 -1
- data/lib/active_pubsub/version.rb +1 -1
- data/spec/active_pubsub/publish_with_serializer_spec.rb +24 -0
- data/spec/active_pubsub/publishable_spec.rb +18 -0
- data/spec/support/db/setup.rb +10 -1
- data/spec/support/models/author.rb +14 -0
- data/spec/support/serializers/author_serializer.rb +3 -0
- data/spec/support/serializers.rb +1 -0
- data/spec/test.db +0 -0
- metadata +24 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e22f01f9cf4b2f63a384b21e4aa28b9623ef20b0
|
4
|
+
data.tar.gz: 2376b5d7171510a5087cfb021c50d105f0d480f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4fd96f0626db35b97853c803f8af0ace6746cce0910159187f18b504ddb3e6dbd1462d8f7ab9468f5d07c3090b0056aa24e61c52f8b0600a2ee3e72a0d1a7df
|
7
|
+
data.tar.gz: bb359a492946e1c60ca0d6cac8c50498c03573a3f03bc712bcfead4792915b8395fc51c0f5670a5994142439fc37bc6f258bd1c19f1b54c19688169eec541cf9
|
data/active_pubsub.gemspec
CHANGED
@@ -38,5 +38,6 @@ Gem::Specification.new do |spec|
|
|
38
38
|
spec.add_development_dependency 'guard-bundler', '~> 2'
|
39
39
|
spec.add_development_dependency 'rb-fsevent'
|
40
40
|
spec.add_development_dependency 'terminal-notifier-guard'
|
41
|
+
spec.add_development_dependency "active_model_serializers"
|
41
42
|
|
42
43
|
end
|
@@ -2,18 +2,22 @@ module ActivePubsub
|
|
2
2
|
module PublishWithSerializer
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
-
#todo: move this into separate gem
|
5
|
+
#todo: move this into separate gem?
|
6
6
|
|
7
7
|
included do
|
8
8
|
class_attribute :publish_serializer
|
9
9
|
end
|
10
10
|
|
11
11
|
def serialized_resource
|
12
|
-
serialized_resource_attributes
|
13
|
-
|
12
|
+
serialized_resource_attributes.merge!(:changes => previous_changes) if previous_changes
|
13
|
+
|
14
14
|
::Marshal.dump(serialized_resource_attributes)
|
15
15
|
end
|
16
16
|
|
17
|
+
def serialized_resource_attributes
|
18
|
+
@serialized_resource_attributes ||= self.class.publish_serializer.new(self).attributes
|
19
|
+
end
|
20
|
+
|
17
21
|
module ClassMethods
|
18
22
|
def serialize_publish_with(klass)
|
19
23
|
self.publish_serializer = klass
|
@@ -17,8 +17,11 @@ module ActivePubsub
|
|
17
17
|
::ActivePubsub::Publisher.increment_publishable_model_count!
|
18
18
|
end
|
19
19
|
|
20
|
+
### todo: investigate why specs break if && hash is omitted
|
20
21
|
def attributes_hash
|
21
|
-
|
22
|
+
hash = self.as_json
|
23
|
+
hash.merge!(:changes => previous_changes) if previous_changes && hash
|
24
|
+
hash
|
22
25
|
end
|
23
26
|
|
24
27
|
private
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ::ActivePubsub::PublishWithSerializer do
|
4
|
+
subject { ::Fake::Blog::Author }
|
5
|
+
let(:publisher) { ::ActivePubsub.publisher }
|
6
|
+
|
7
|
+
context "ClassMethods" do
|
8
|
+
its(:publish_serializer) { should eq ::AuthorSerializer }
|
9
|
+
end
|
10
|
+
|
11
|
+
context "InstanceMethods" do
|
12
|
+
subject{ ::Fake::Blog::Author.new(:first_name => "whatever") }
|
13
|
+
|
14
|
+
its (:serialized_resource_attributes) { should have_key(:first_name) }
|
15
|
+
|
16
|
+
describe "#serialized_resource" do
|
17
|
+
it "should dump serialized resource attributes" do
|
18
|
+
Marshal.should_receive(:dump).with(subject.serialized_resource_attributes)
|
19
|
+
|
20
|
+
subject.serialized_resource
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -11,6 +11,24 @@ describe ::ActivePubsub::Publishable do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
context "Instance Methods" do
|
14
|
+
describe "#attributes_hash" do
|
15
|
+
#had to do some hackyness in attributes_hash method to get this to pass
|
16
|
+
#and not sure why, but as_json was coming back nil
|
17
|
+
it "should call as json" do
|
18
|
+
instance_subject.should_receive(:as_json)
|
19
|
+
|
20
|
+
instance_subject.attributes_hash
|
21
|
+
end
|
22
|
+
|
23
|
+
context "when attributes are changed" do
|
24
|
+
let(:created_record) { ::Fake::Blog::Post.create!(:title => "Post about nothing") }
|
25
|
+
|
26
|
+
it "should merge previous changes" do
|
27
|
+
expect(created_record.attributes_hash).to have_key("title")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
14
32
|
describe "#publish_updated_event" do
|
15
33
|
let(:created_record) { ::Fake::Blog::Post.create!(:title => "Post about nothing") }
|
16
34
|
|
data/spec/support/db/setup.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
require_relative '../../support/serializers/author_serializer.rb'
|
3
|
+
module Fake
|
4
|
+
module Blog
|
5
|
+
class Author < ::ActiveRecord::Base
|
6
|
+
include ::ActivePubsub::Publishable
|
7
|
+
include ::ActivePubsub::PublishWithSerializer
|
8
|
+
|
9
|
+
serialize_publish_with ::AuthorSerializer
|
10
|
+
|
11
|
+
publish_as "test"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'support/serializers/author_serializer'
|
data/spec/test.db
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_pubsub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Ayre
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_attr
|
@@ -276,6 +276,20 @@ dependencies:
|
|
276
276
|
- - ">="
|
277
277
|
- !ruby/object:Gem::Version
|
278
278
|
version: '0'
|
279
|
+
- !ruby/object:Gem::Dependency
|
280
|
+
name: active_model_serializers
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
282
|
+
requirements:
|
283
|
+
- - ">="
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: '0'
|
286
|
+
type: :development
|
287
|
+
prerelease: false
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
289
|
+
requirements:
|
290
|
+
- - ">="
|
291
|
+
- !ruby/object:Gem::Version
|
292
|
+
version: '0'
|
279
293
|
description: Uses RabbitMQ and ActiveRecord for publishing and consuming model events
|
280
294
|
from any service
|
281
295
|
email:
|
@@ -308,12 +322,16 @@ files:
|
|
308
322
|
- lib/active_pubsub/version.rb
|
309
323
|
- spec/active_pubsub/config_spec.rb
|
310
324
|
- spec/active_pubsub/connection_spec.rb
|
325
|
+
- spec/active_pubsub/publish_with_serializer_spec.rb
|
311
326
|
- spec/active_pubsub/publishable_spec.rb
|
312
327
|
- spec/active_pubsub/publisher_spec.rb
|
313
328
|
- spec/spec_helper.rb
|
314
329
|
- spec/support/db/setup.rb
|
315
330
|
- spec/support/models.rb
|
331
|
+
- spec/support/models/author.rb
|
316
332
|
- spec/support/models/post.rb
|
333
|
+
- spec/support/serializers.rb
|
334
|
+
- spec/support/serializers/author_serializer.rb
|
317
335
|
- spec/test.db
|
318
336
|
homepage: https://github.com/jasonayre/active_pubsub
|
319
337
|
licenses:
|
@@ -343,10 +361,14 @@ summary: Pubsub using RabbitMQ and ActiveRecord, observe model events from diffe
|
|
343
361
|
test_files:
|
344
362
|
- spec/active_pubsub/config_spec.rb
|
345
363
|
- spec/active_pubsub/connection_spec.rb
|
364
|
+
- spec/active_pubsub/publish_with_serializer_spec.rb
|
346
365
|
- spec/active_pubsub/publishable_spec.rb
|
347
366
|
- spec/active_pubsub/publisher_spec.rb
|
348
367
|
- spec/spec_helper.rb
|
349
368
|
- spec/support/db/setup.rb
|
350
369
|
- spec/support/models.rb
|
370
|
+
- spec/support/models/author.rb
|
351
371
|
- spec/support/models/post.rb
|
372
|
+
- spec/support/serializers.rb
|
373
|
+
- spec/support/serializers/author_serializer.rb
|
352
374
|
- spec/test.db
|