active_record_streams 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +11 -0
- data/Gemfile.lock +2 -2
- data/lib/active_record_streams/publishers/http_stream.rb +12 -4
- data/lib/active_record_streams/publishers/http_stream_spec.rb +14 -1
- data/lib/active_record_streams/publishers/kinesis_stream.rb +5 -9
- data/lib/active_record_streams/publishers/sns_stream.rb +3 -3
- data/lib/active_record_streams/version.rb +1 -1
- data/lib/active_record_streams/version_spec.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 403894aa0aa3a80a42602348ec240e4b674e34d9cc0ff9ac911744e0d5aec7c7
|
4
|
+
data.tar.gz: 00bf4bcd8d65cda87cdd43cf2fe7d26673fe62589d154cf52a54de882ca1f61b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac59072c96a62e80f9818a7cb4bfbb696ea26063686d668fba209bc9315165e04fbd83e36e919c2ff4899d2d2c9030b4e5cee04cbc1cf0116423eedbe643dd89
|
7
|
+
data.tar.gz: 9a68fa932233a71815b77297f9be0d30466b66fd1199e3ea8be9ff84081fbab084c83ef2cfb968f71fd15730d77be774b67a281acbdfa47f59dac400ab98062e
|
data/CHANGELOG.md
CHANGED
@@ -11,3 +11,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
11
11
|
- Global hooks for ActiveRecord 4.2.10.
|
12
12
|
- Overrides to ActiveRecord::Base, ActiveRecord::Relation, ActiveRecord::Persistence to serve callbacks.
|
13
13
|
- SNS, Kinesis and HTTP stream types.
|
14
|
+
|
15
|
+
## [0.1.1] - 2019-04-26
|
16
|
+
### Added
|
17
|
+
- Error handlers for streams
|
18
|
+
- Documentation for error handlers
|
19
|
+
- Tests for error handlers
|
20
|
+
- New method to build Message from json
|
21
|
+
|
22
|
+
## [0.1.2] - 2019-05-02
|
23
|
+
### Added
|
24
|
+
- HTTPS targets support
|
data/Gemfile.lock
CHANGED
@@ -37,10 +37,10 @@ module ActiveRecordStreams
|
|
37
37
|
request.body = message.json
|
38
38
|
response = http.request(request)
|
39
39
|
assert_response_code(response)
|
40
|
-
rescue StandardError =>
|
41
|
-
raise
|
40
|
+
rescue StandardError => e
|
41
|
+
raise e unless @error_handler.is_a?(Proc)
|
42
42
|
|
43
|
-
@error_handler.call(self, table_name, message,
|
43
|
+
@error_handler.call(self, table_name, message, e)
|
44
44
|
end
|
45
45
|
|
46
46
|
private
|
@@ -58,7 +58,15 @@ module ActiveRecordStreams
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def http
|
61
|
-
@http ||=
|
61
|
+
@http ||= begin
|
62
|
+
http_client = Net::HTTP.new(uri.host, uri.port)
|
63
|
+
http_client.use_ssl = true if https?
|
64
|
+
http_client
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def https?
|
69
|
+
uri.scheme == 'https'
|
62
70
|
end
|
63
71
|
|
64
72
|
def uri
|
@@ -12,7 +12,7 @@ RSpec.describe ActiveRecordStreams::Publishers::HttpStream do
|
|
12
12
|
|
13
13
|
let(:request) { double('body=': nil) }
|
14
14
|
let(:response) { double(code: 200) }
|
15
|
-
let(:http_client) { double('body=': nil, request: response) }
|
15
|
+
let(:http_client) { double('body=': nil, 'use_ssl=': nil, request: response) }
|
16
16
|
let(:message) { double(json: '{}') }
|
17
17
|
|
18
18
|
subject do
|
@@ -88,5 +88,18 @@ RSpec.describe ActiveRecordStreams::Publishers::HttpStream do
|
|
88
88
|
subject.publish(actual_table_name, message)
|
89
89
|
end
|
90
90
|
end
|
91
|
+
|
92
|
+
context 'https target' do
|
93
|
+
let(:url) { 'https://hello.world' }
|
94
|
+
|
95
|
+
it 'sends event to an https target' do
|
96
|
+
expect(http_client).to receive(:use_ssl=).with(true)
|
97
|
+
|
98
|
+
subject.publish(actual_table_name, message)
|
99
|
+
|
100
|
+
expect(request).to have_received(:body=).with(message.json)
|
101
|
+
expect(http_client).to have_received(:request).with(request)
|
102
|
+
end
|
103
|
+
end
|
91
104
|
end
|
92
105
|
end
|
@@ -37,16 +37,12 @@ module ActiveRecordStreams
|
|
37
37
|
return unless (any_table? && allowed_table?(table_name)) ||
|
38
38
|
table_name == @table_name
|
39
39
|
|
40
|
-
client.publish(
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
@overrides
|
45
|
-
)
|
46
|
-
rescue StandardError => error
|
47
|
-
raise error unless @error_handler.is_a?(Proc)
|
40
|
+
client.publish(@stream_name, partition_key(table_name),
|
41
|
+
message.json, @overrides)
|
42
|
+
rescue StandardError => e
|
43
|
+
raise e unless @error_handler.is_a?(Proc)
|
48
44
|
|
49
|
-
@error_handler.call(self, table_name, message,
|
45
|
+
@error_handler.call(self, table_name, message, e)
|
50
46
|
end
|
51
47
|
|
52
48
|
private
|
@@ -35,10 +35,10 @@ module ActiveRecordStreams
|
|
35
35
|
table_name == @table_name
|
36
36
|
|
37
37
|
client.publish(@topic_arn, message.json, @overrides)
|
38
|
-
rescue StandardError =>
|
39
|
-
raise
|
38
|
+
rescue StandardError => e
|
39
|
+
raise e unless @error_handler.is_a?(Proc)
|
40
40
|
|
41
|
-
@error_handler.call(self, table_name, message,
|
41
|
+
@error_handler.call(self, table_name, message, e)
|
42
42
|
end
|
43
43
|
|
44
44
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record_streams
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Advanon Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -191,8 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
191
191
|
- !ruby/object:Gem::Version
|
192
192
|
version: '0'
|
193
193
|
requirements: []
|
194
|
-
|
195
|
-
rubygems_version: 2.6.14
|
194
|
+
rubygems_version: 3.0.3
|
196
195
|
signing_key:
|
197
196
|
specification_version: 4
|
198
197
|
summary: Stream ActiveRecord events via HTTP, AWS SNS or Kinesis streams
|