jets 5.0.5 → 5.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/jets/generators/job/templates/event_types/s3.rb.tt +2 -2
- data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +2 -0
- data/lib/jets/job/dsl/dynamodb_event.rb +5 -4
- data/lib/jets/job/dsl/kinesis_event.rb +5 -4
- data/lib/jets/job/dsl/sqs_event.rb +4 -3
- data/lib/jets/job/helpers/kinesis_event_helper.rb +4 -0
- data/lib/jets/job/helpers/log_event_helper.rb +4 -0
- data/lib/jets/job/helpers/s3_event_helper.rb +36 -4
- data/lib/jets/job/helpers/sns_event_helper.rb +20 -4
- data/lib/jets/job/helpers/sqs_event_helper.rb +22 -6
- data/lib/jets/stack/output/lookup.rb +5 -1
- data/lib/jets/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e04f05b1acc2261aa805569fce675ac41b87de70487156b625ddc1beedad957a
|
4
|
+
data.tar.gz: 4f89a28661441ff74bf7cb98b90eef08583fe18e20ba72472240e41f942b8ff2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 189e8b589c09a258329a7f0d29ac52759a854e75ddafa312716e93359689ee87946c7cecb8cbb720e0046042e0358fd7086ef2b011ecb2929014f0c371352548
|
7
|
+
data.tar.gz: 5f2adbfc890b6a0346a998463fa3d297138aebe570576d1f2d3f782456da5c4384151043f9b241a966c6fcfcf3b2fb2ffda49c129ea43a3581513422f85e42fa
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,15 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
|
5
5
|
|
6
|
+
## [5.0.7] - 2023-12-24
|
7
|
+
- [#699](https://github.com/rubyonjets/jets/pull/699) cache Stack.lookup output in class memory
|
8
|
+
- [#700](https://github.com/rubyonjets/jets/pull/700) update s3 sns and sqs event helpers to return all events
|
9
|
+
- [#701](https://github.com/rubyonjets/jets/pull/701) fix s3_event and change method to s3_event_payloads
|
10
|
+
|
11
|
+
## [5.0.6] - 2023-12-21
|
12
|
+
- [#698](https://github.com/rubyonjets/jets/pull/698) make iam_policy additive to default_iam_policy for event
|
13
|
+
- jets new environments/production.rb dont include assets.compile for api mode
|
14
|
+
|
6
15
|
## [5.0.5] - 2023-12-19
|
7
16
|
- [#697](https://github.com/rubyonjets/jets/pull/697) fix sqs_queue output url camelcase name
|
8
17
|
|
@@ -4,8 +4,8 @@ class <%= class_name %>Job < ApplicationJob
|
|
4
4
|
s3_event "my-bucket" # new or existing bucket
|
5
5
|
def <%= options[:name] %>
|
6
6
|
puts "event #{JSON.dump(event)}"
|
7
|
-
puts "
|
8
|
-
puts "
|
7
|
+
puts "s3_events #{JSON.dump(s3_events)}"
|
8
|
+
puts "s3_objects #{JSON.dump(s3_objects)}"
|
9
9
|
end
|
10
10
|
end
|
11
11
|
<% end -%>
|
@@ -7,7 +7,9 @@ Jets.application.configure do
|
|
7
7
|
<%- unless options[:mode] == 'job' -%>
|
8
8
|
config.consider_all_requests_local = false
|
9
9
|
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
10
|
+
<%- if options[:mode] == 'html' -%>
|
10
11
|
config.assets.compile = false
|
12
|
+
<%- end -%>
|
11
13
|
|
12
14
|
# Ignore bad email addresses and do not raise email delivery errors.
|
13
15
|
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
@@ -7,10 +7,11 @@ module Jets::Job::Dsl
|
|
7
7
|
stream_arn = full_dynamodb_stream_arn(table_name)
|
8
8
|
default_iam_policy = default_dynamodb_stream_policy(stream_arn)
|
9
9
|
|
10
|
-
# Create iam policy allows access to
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
# Create iam policy allows access to dynamodb
|
11
|
+
iam_policy_option = [options.delete(:iam_policy)].compact.flatten
|
12
|
+
user_iam_policy = [@iam_policy].compact.flatten
|
13
|
+
iam_policy_props = iam_policy_option + user_iam_policy + [default_iam_policy]
|
14
|
+
iam_policy(iam_policy_props)
|
14
15
|
|
15
16
|
props = options # by this time options only has EventSourceMapping properties
|
16
17
|
default = {
|
@@ -4,10 +4,11 @@ module Jets::Job::Dsl
|
|
4
4
|
stream_arn = full_kinesis_stream_arn(stream_name)
|
5
5
|
default_iam_policy = default_kinesis_stream_policy(stream_arn)
|
6
6
|
|
7
|
-
# Create iam policy allows access to
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
# Create iam policy allows access to kinesis
|
8
|
+
iam_policy_option = [options.delete(:iam_policy)].compact.flatten
|
9
|
+
user_iam_policy = [@iam_policy].compact.flatten
|
10
|
+
iam_policy_props = iam_policy_option + user_iam_policy + [default_iam_policy]
|
11
|
+
iam_policy(iam_policy_props)
|
11
12
|
|
12
13
|
props = options # by this time options only has EventSourceMapping properties
|
13
14
|
default = {
|
@@ -51,9 +51,10 @@ module Jets::Job::Dsl
|
|
51
51
|
end
|
52
52
|
|
53
53
|
# Create iam policy allows access to queue
|
54
|
-
|
55
|
-
|
56
|
-
|
54
|
+
iam_policy_option = [options.delete(:iam_policy)].compact.flatten
|
55
|
+
user_iam_policy = [@iam_policy].compact.flatten
|
56
|
+
iam_policy_props = iam_policy_option + user_iam_policy + [default_iam_policy]
|
57
|
+
iam_policy(iam_policy_props)
|
57
58
|
|
58
59
|
props = options # by this time options only has EventSourceMapping properties
|
59
60
|
default = {
|
@@ -1,13 +1,45 @@
|
|
1
1
|
module Jets::Job::Helpers
|
2
2
|
module S3EventHelper
|
3
|
+
def s3_event_payloads
|
4
|
+
messages = event["Records"].map do |record|
|
5
|
+
record["Sns"]["Message"]
|
6
|
+
end
|
7
|
+
messages.map do |message|
|
8
|
+
h = JSON.load(message)
|
9
|
+
ActiveSupport::HashWithIndifferentAccess.new(h)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def s3_event_payloads?
|
14
|
+
event["Records"]&.any? { |r| r.dig("Sns", "Message") }
|
15
|
+
end
|
16
|
+
|
17
|
+
def s3_objects
|
18
|
+
s3_event_payloads.map do |payload|
|
19
|
+
records = payload["Records"]
|
20
|
+
records.map do |record|
|
21
|
+
record["s3"]["object"]
|
22
|
+
end
|
23
|
+
end.flatten
|
24
|
+
end
|
25
|
+
|
26
|
+
def s3_objects?
|
27
|
+
s3_event_payloads["Records"]&.any? { |r| r.dig("s3", "object") }
|
28
|
+
end
|
29
|
+
|
30
|
+
# Deprecated methods below
|
3
31
|
def s3_event
|
4
|
-
|
5
|
-
|
6
|
-
|
32
|
+
puts "WARN: s3_event is deprecated".color(:yellow)
|
33
|
+
puts "It can possibly drop events when come in extremely fast."
|
34
|
+
puts "Use s3_event_payloads instead"
|
35
|
+
s3_event_payloads.first
|
7
36
|
end
|
8
37
|
|
9
38
|
def s3_object
|
10
|
-
|
39
|
+
puts "WARN: s3_object is deprecated".color(:yellow)
|
40
|
+
puts "It can possibly drop events when come in extremely fast."
|
41
|
+
puts "Use s3_objects instead"
|
42
|
+
s3_objects.first
|
11
43
|
end
|
12
44
|
end
|
13
45
|
end
|
@@ -1,8 +1,24 @@
|
|
1
1
|
module Jets::Job::Helpers
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
module SnsEventHelper
|
3
|
+
def sns_event_payloads
|
4
|
+
records = event["Records"]
|
5
|
+
return [] unless records
|
6
|
+
records.map do |record|
|
7
|
+
message = record["Sns"]["Message"]
|
8
|
+
ActiveSupport::HashWithIndifferentAccess.new(JSON.load(message))
|
6
9
|
end
|
7
10
|
end
|
11
|
+
|
12
|
+
def sns_event_payloads?
|
13
|
+
event["Records"]&.any? { |r| r.dig("Sns", "Message") }
|
14
|
+
end
|
15
|
+
|
16
|
+
# Deprecated methods below
|
17
|
+
def sns_event_payload
|
18
|
+
puts "WARN: sns_event_payload is deprecated".color(:yellow)
|
19
|
+
puts "It can possibly drop events when come in extremely fast."
|
20
|
+
puts "Use sns_event_payloads instead"
|
21
|
+
sns_event_payloads.first
|
22
|
+
end
|
23
|
+
end
|
8
24
|
end
|
@@ -1,8 +1,24 @@
|
|
1
1
|
module Jets::Job::Helpers
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
module SqsEventHelper
|
3
|
+
def sqs_event_payloads
|
4
|
+
records = event["Records"]
|
5
|
+
return [] unless records
|
6
|
+
records.map do |record|
|
7
|
+
message = record["body"]
|
8
|
+
ActiveSupport::HashWithIndifferentAccess.new(JSON.load(message))
|
9
|
+
end
|
7
10
|
end
|
8
|
-
|
11
|
+
|
12
|
+
def sqs_event_payloads?
|
13
|
+
event["Records"]&.any? { |r| r.dig("body") }
|
14
|
+
end
|
15
|
+
|
16
|
+
# Deprecated methods below
|
17
|
+
def sqs_event_payload
|
18
|
+
puts "WARN: sqs_event_payload is deprecated".color(:yellow)
|
19
|
+
puts "It can possibly drop events when come in extremely fast."
|
20
|
+
puts "Use sqs_event_payloads instead"
|
21
|
+
sqs_event_payloads.first
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -6,7 +6,11 @@ class Jets::Stack::Output
|
|
6
6
|
@stack_subclass = stack_subclass
|
7
7
|
end
|
8
8
|
|
9
|
+
@@cache = {}
|
9
10
|
def output(logical_id)
|
11
|
+
cache_key = "#{@stack_subclass}-#{logical_id}"
|
12
|
+
return @@cache[cache_key] if @@cache[cache_key]
|
13
|
+
|
10
14
|
child_stack_id = @stack_subclass.to_s.camelize
|
11
15
|
|
12
16
|
stack_arn = shared_stack_arn(child_stack_id)
|
@@ -14,7 +18,7 @@ class Jets::Stack::Output
|
|
14
18
|
child = resp.stacks.first
|
15
19
|
return unless child
|
16
20
|
|
17
|
-
output_value(child, logical_id)
|
21
|
+
@@cache[cache_key] = output_value(child, logical_id)
|
18
22
|
end
|
19
23
|
|
20
24
|
# Shared child stack arn
|
data/lib/jets/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|