jets 5.0.6 → 5.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d0438bdc5ee9aaa104aad58486eb1b45d8619ea9fc98d95c51bd569047a0238
4
- data.tar.gz: 210532fb5b1c69b9463c824bbae2c4a40a7724aad5802f3b871aa386b643e745
3
+ metadata.gz: e04f05b1acc2261aa805569fce675ac41b87de70487156b625ddc1beedad957a
4
+ data.tar.gz: 4f89a28661441ff74bf7cb98b90eef08583fe18e20ba72472240e41f942b8ff2
5
5
  SHA512:
6
- metadata.gz: 2667161cd40b1f8356ad8fcb107d43be6086a92312fe2efc9eba8af246f1f0709c9a04f3e6782cbfc79502a6de190a5c328094cd5a29d63609030f034de558e6
7
- data.tar.gz: 3de7ac271c630fe8014e0d2a9468645a4ed097ea5d70d6c6ec4707d48c4aa5de4b6dbd4fa45501e3cbbb30dfc8ba63905d3392efb487758958ef9feb4c90aeb6
6
+ metadata.gz: 189e8b589c09a258329a7f0d29ac52759a854e75ddafa312716e93359689ee87946c7cecb8cbb720e0046042e0358fd7086ef2b011ecb2929014f0c371352548
7
+ data.tar.gz: 5f2adbfc890b6a0346a998463fa3d297138aebe570576d1f2d3f782456da5c4384151043f9b241a966c6fcfcf3b2fb2ffda49c129ea43a3581513422f85e42fa
data/CHANGELOG.md CHANGED
@@ -3,6 +3,11 @@
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
+
6
11
  ## [5.0.6] - 2023-12-21
7
12
  - [#698](https://github.com/rubyonjets/jets/pull/698) make iam_policy additive to default_iam_policy for event
8
13
  - jets new environments/production.rb dont include assets.compile for api mode
@@ -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 "s3_event #{JSON.dump(s3_event)}"
8
- puts "s3_object #{JSON.dump(s3_object)}"
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 -%>
@@ -9,5 +9,9 @@ module Jets::Job::Helpers
9
9
  Base64.decode64(encoded) # data
10
10
  end
11
11
  end
12
+
13
+ def kinesis_data?
14
+ event["Records"]&.any? { |r| r.dig("kinesis", "data") }
15
+ end
12
16
  end
13
17
  end
@@ -13,5 +13,9 @@ module Jets::Job::Helpers
13
13
  data = JSON.load(uncompressed_string)
14
14
  ActiveSupport::HashWithIndifferentAccess.new(data)
15
15
  end
16
+
17
+ def log_event?
18
+ !!event.dig("awslogs", "data")
19
+ end
16
20
  end
17
21
  end
@@ -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
- message = event["Records"][0]["Sns"]["Message"]
5
- h = JSON.load(message)
6
- ActiveSupport::HashWithIndifferentAccess.new(h)
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
- s3_event["Records"][0]["s3"]["object"]
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
- module SnsEventHelper
3
- def sns_event_payload
4
- message = event&.dig("Records", 0, "Sns", "Message")
5
- @sns_event_payload ||= ActiveSupport::HashWithIndifferentAccess.new(JSON.load(message))
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
- module SqsEventHelper
3
- def sqs_event_payload
4
- message = event&.dig("Records", 0, "body")
5
- @sqs_event_payload ||= ActiveSupport::HashWithIndifferentAccess.new(JSON.parse(message))
6
- end
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
- end
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
@@ -1,3 +1,3 @@
1
1
  module Jets
2
- VERSION = "5.0.6"
2
+ VERSION = "5.0.7"
3
3
  end
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.6
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-21 00:00:00.000000000 Z
11
+ date: 2023-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionmailer