jets 5.0.6 → 5.0.7

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 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