google-pubsub-enhancer 0.2.1 → 0.3.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/README.md +40 -1
- data/lib/google_pubsub_enhancer/spec.rb +25 -0
- data/lib/google_pubsub_enhancer/version.rb +1 -1
- data/lib/google_pubsub_enhancer.rb +3 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0d68888960869040e10aadf51b0d4b2cc624636
|
4
|
+
data.tar.gz: 06040d4f23968fe94dc9f2f57cdc3f172c7fed42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1d0e02a113ca4f975635a7e65fa13983daf586783547022ebdc2d6f737c16f5243b0433e2d26526c4b67cad6cb317fa81538b6d12eb6b477c8f499c3f845597
|
7
|
+
data.tar.gz: bcb6be3867750466c3caaeb2c2a8985a3aac01a7b7da06905c67818dfe68ec376d917716674e2efd2061716aaa707160a034ffdf29b891dd9b73c58c5f087cca
|
data/README.md
CHANGED
@@ -28,10 +28,12 @@ require 'google_pubsub_enhancer'
|
|
28
28
|
|
29
29
|
app = GooglePubsubEnhancer.new do
|
30
30
|
|
31
|
+
# you can get your messages from env[:received_messages]
|
32
|
+
# Be aware of the messages you got are pubsub objects. You van get your messages by calling map(&:data) on it.
|
31
33
|
use YourMiddleware
|
32
34
|
use GooglePubsubEnhancer::Publisher,
|
33
35
|
short_topic_name: short_topic_name,
|
34
|
-
messages:
|
36
|
+
messages: messages_key_you_declare
|
35
37
|
end
|
36
38
|
|
37
39
|
app.run(subscription_name)
|
@@ -42,6 +44,43 @@ app.run(subscription_name)
|
|
42
44
|
|
43
45
|
To configure how much message should be pulled, use the GOOGLE_PUBSUB_ENHANCER_MAX_PULL_SIZE env variable with an integer value
|
44
46
|
|
47
|
+
## Test
|
48
|
+
|
49
|
+
You can test your enhancer like:
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
require 'spec_helper'
|
53
|
+
|
54
|
+
describe YourApplication do
|
55
|
+
|
56
|
+
include GooglePubsubEnhancer::Spec
|
57
|
+
|
58
|
+
#the only user specific setting you need
|
59
|
+
let(:messages) {[{foo:1}, {bar:2}]}
|
60
|
+
|
61
|
+
it "should do the magic you write into" do
|
62
|
+
|
63
|
+
app = GooglePubsubEnhancer.new do
|
64
|
+
|
65
|
+
# in this case the test middleware creates messages from pubsub objects
|
66
|
+
use YourMiddleware, -> env do
|
67
|
+
env[:messages_key] = env[:received_messages].map(&:data)
|
68
|
+
end
|
69
|
+
|
70
|
+
use GooglePubsubEnhancer::Middleware::Publisher,
|
71
|
+
short_topic_name: 'short_topic_name',
|
72
|
+
messages: :messages_key
|
73
|
+
end
|
74
|
+
|
75
|
+
# the only expectation you need (further more you can check the)
|
76
|
+
expect(publisher).to receive(:publish).with({foo:1}).ordered
|
77
|
+
expect(publisher).to receive(:publish).with({bar:2}).ordered
|
78
|
+
|
79
|
+
app.run 'subscription_short_name'
|
80
|
+
end
|
81
|
+
end
|
82
|
+
```
|
83
|
+
|
45
84
|
## Development
|
46
85
|
|
47
86
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module GooglePubsubEnhancer::Spec
|
2
|
+
module ClassMethods
|
3
|
+
def __setup_pubsub!
|
4
|
+
let(:messages) { [] }
|
5
|
+
let(:pubsub) {double "pubsub"}
|
6
|
+
let(:publisher) { double "publisher"}
|
7
|
+
let(:subscription) { double 'subscription'}
|
8
|
+
before do
|
9
|
+
allow(ENV).to receive(:[]).with("PUBSUB_KEYFILE_JSON").and_return(JSON.dump({project_id: 'cica'}))
|
10
|
+
allow(Google::Cloud::Pubsub).to receive(:new).and_return(pubsub)
|
11
|
+
allow(pubsub).to receive(:publish).and_yield(publisher)
|
12
|
+
allow(pubsub).to receive(:subscription).and_return subscription
|
13
|
+
allow(subscription).to receive(:pull).and_return(messages.map { |m| Google::Cloud::Pubsub::Message.new(m.to_s)},nil)
|
14
|
+
allow(publisher).to receive(:publish)
|
15
|
+
allow(subscription).to receive(:acknowledge)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.included(klass)
|
21
|
+
klass.extend ClassMethods
|
22
|
+
klass.__setup_pubsub!
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -4,8 +4,9 @@ require 'google/cloud/pubsub'
|
|
4
4
|
|
5
5
|
class GooglePubsubEnhancer
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
require 'google_pubsub_enhancer/constants'
|
8
|
+
require 'google_pubsub_enhancer/middleware'
|
9
|
+
require 'google_pubsub_enhancer/spec'
|
9
10
|
|
10
11
|
class << self
|
11
12
|
def name_by(type, name)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-pubsub-enhancer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bejczib
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -104,6 +104,7 @@ files:
|
|
104
104
|
- lib/google_pubsub_enhancer/middleware/logger.rb
|
105
105
|
- lib/google_pubsub_enhancer/middleware/logger/duration.rb
|
106
106
|
- lib/google_pubsub_enhancer/middleware/publisher.rb
|
107
|
+
- lib/google_pubsub_enhancer/spec.rb
|
107
108
|
- lib/google_pubsub_enhancer/version.rb
|
108
109
|
homepage: http://github.com/bejczib/google-pubsub-enhancer
|
109
110
|
licenses:
|