jets 5.0.6 → 5.0.8

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: 3c9deeac005b373929e04e747ce2465b82eccc49a99a39830025228e1da199e7
4
+ data.tar.gz: e1e5849237312cfe6725a1d4bd163b8b17f4ef904a000b5c5323de05a7afbaf4
5
5
  SHA512:
6
- metadata.gz: 2667161cd40b1f8356ad8fcb107d43be6086a92312fe2efc9eba8af246f1f0709c9a04f3e6782cbfc79502a6de190a5c328094cd5a29d63609030f034de558e6
7
- data.tar.gz: 3de7ac271c630fe8014e0d2a9468645a4ed097ea5d70d6c6ec4707d48c4aa5de4b6dbd4fa45501e3cbbb30dfc8ba63905d3392efb487758958ef9feb4c90aeb6
6
+ metadata.gz: c351ace071bea12bca7785140d1a3cd0abcc8750a1e06d99cbe5691af1a26a573f8ff915a1d4569dd97c736df852d83d8944161c2387c42791588f568d13e17f
7
+ data.tar.gz: 1bef67bd4957279b84d2315597568a78c4fe17806d659116dd59f55018e242b432fbc23d186ca4e171f97db001ac22c5f86158049b817713b2ead712158eb419
data/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
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.8] - 2023-12-24
7
+ - [#702](https://github.com/rubyonjets/jets/pull/702) prettier event helpers IE: s3_events vs s3_event_payloads
8
+
9
+ ## [5.0.7] - 2023-12-24
10
+ - [#699](https://github.com/rubyonjets/jets/pull/699) cache Stack.lookup output in class memory
11
+ - [#700](https://github.com/rubyonjets/jets/pull/700) update s3 sns and sqs event helpers to return all events
12
+ - [#701](https://github.com/rubyonjets/jets/pull/701) fix s3_event and change method to s3_event_payloads
13
+
6
14
  ## [5.0.6] - 2023-12-21
7
15
  - [#698](https://github.com/rubyonjets/jets/pull/698) make iam_policy additive to default_iam_policy for event
8
16
  - jets new environments/production.rb dont include assets.compile for api mode
@@ -130,7 +130,7 @@ module Jets::Builders
130
130
 
131
131
  def internal_shims
132
132
  jets_base_path if Jets.custom_domain?
133
- s3_bucket_config if Jets.s3_event?
133
+ s3_bucket_config if Jets.s3_events?
134
134
  end
135
135
 
136
136
  def jets_base_path
@@ -35,7 +35,7 @@ module Jets::Command
35
35
 
36
36
  private
37
37
  def create_s3_event_buckets
38
- buckets = Jets::Job::Base.s3_events.keys
38
+ buckets = Jets::Job::Base._s3_events.keys
39
39
  buckets.each do |bucket|
40
40
  Jets::AwsServices::S3Bucket.ensure_exists(bucket)
41
41
  end
data/lib/jets/core.rb CHANGED
@@ -158,8 +158,8 @@ module Jets::Core
158
158
  Jets.config.domain.hosted_zone_name
159
159
  end
160
160
 
161
- def s3_event?
162
- !Jets::Job::Base.s3_events.empty?
161
+ def s3_events?
162
+ !Jets::Job::Base._s3_events.empty?
163
163
  end
164
164
 
165
165
  def process(event, context, handler)
@@ -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 -%>
@@ -4,6 +4,8 @@ class <%= class_name %>Job < ApplicationJob
4
4
  sns_event "hello-topic"
5
5
  def <%= options[:name] %>
6
6
  puts "event #{JSON.dump(event)}"
7
+ puts "sns_events #{JSON.dump(sns_events)}"
8
+ puts "sns_events? #{JSON.dump(sns_events?)}"
7
9
  end
8
10
  end
9
11
  <% end -%>
@@ -4,6 +4,8 @@ class <%= class_name %>Job < ApplicationJob
4
4
  sqs_event "hello-queue"
5
5
  def <%= options[:name] %>
6
6
  puts "event #{JSON.dump(event)}"
7
+ puts "sqs_events #{JSON.dump(sqs_events)}"
8
+ puts "sqs_events? #{JSON.dump(sqs_events?)}"
7
9
  end
8
10
  end
9
11
  <% end -%>
data/lib/jets/job/base.rb CHANGED
@@ -10,17 +10,17 @@ module Jets::Job
10
10
  include Dsl
11
11
 
12
12
  # non-DSL methods
13
- include Helpers::KinesisEventHelper
14
- include Helpers::LogEventHelper
15
- include Helpers::S3EventHelper
16
- include Helpers::SnsEventHelper
17
- include Helpers::SqsEventHelper
13
+ include Helpers::KinesisEvent
14
+ include Helpers::LogEvent
15
+ include Helpers::S3Event
16
+ include Helpers::SnsEvent
17
+ include Helpers::SqsEvent
18
18
  prepend Jets::ExceptionReporting::Process
19
19
 
20
20
  # Tracks bucket each time an s3_event is declared
21
21
  # Map of bucket_name => stack_name (nested part)
22
- cattr_accessor :s3_events # dont want this to be inheritable intentionally
23
- self.s3_events = {}
22
+ cattr_accessor :_s3_events # dont want this to be inheritable intentionally
23
+ self._s3_events = {}
24
24
 
25
25
  class << self
26
26
  def process(event, context, meth)
@@ -11,7 +11,7 @@ module Jets::Job::Dsl
11
11
  # We will not generate them again. However, we still need to always
12
12
  # add the depends_on declaration to ensure that the shared stack parameters
13
13
  # are properly passed to the nested child stack.
14
- stack_name = s3_events[bucket_name] # already registered
14
+ stack_name = _s3_events[bucket_name] # already registered
15
15
  if stack_name
16
16
  depends_on stack_name.underscore.to_sym, class_prefix: true # always add this
17
17
  return stack_name
@@ -20,7 +20,7 @@ module Jets::Job::Dsl
20
20
  # Create shared resources - one time
21
21
  stack_name = declare_shared_s3_event_resources(bucket_name)
22
22
  depends_on stack_name.underscore.to_sym, class_prefix: true # always add this
23
- self.s3_events[bucket_name] = stack_name # tracks buckets already set up
23
+ self._s3_events[bucket_name] = stack_name # tracks buckets already set up
24
24
  end
25
25
 
26
26
  def declare_shared_s3_event_resources(bucket_name)
@@ -29,8 +29,8 @@ module Jets::Job::Dsl
29
29
  s3_stack.stack_name
30
30
  end
31
31
 
32
- def s3_events
33
- Jets::Job::Base.s3_events
32
+ def _s3_events
33
+ Jets::Job::Base._s3_events
34
34
  end
35
35
  end
36
36
  end
@@ -1,7 +1,7 @@
1
1
  require 'base64'
2
2
 
3
3
  module Jets::Job::Helpers
4
- module KinesisEventHelper
4
+ module KinesisEvent
5
5
  def kinesis_data
6
6
  records = event["Records"]
7
7
  records.map do |record|
@@ -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
@@ -4,7 +4,7 @@ require 'stringio'
4
4
  require 'zlib'
5
5
 
6
6
  module Jets::Job::Helpers
7
- module LogEventHelper
7
+ module LogEvent
8
8
  def log_event
9
9
  encoded = event["awslogs"]["data"]
10
10
  compressed_string = Base64.decode64(encoded)
@@ -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
@@ -0,0 +1,50 @@
1
+ module Jets::Job::Helpers
2
+ module S3Event
3
+ def s3_events
4
+ encoded_messages = event["Records"].map do |record|
5
+ record["Sns"]["Message"] # SNS message is JSON
6
+ end
7
+ # Decode the JSON messages
8
+ messages = encoded_messages.map do |message|
9
+ JSON.load(message)
10
+ end
11
+ # Extract the S3 event records
12
+ messages.map do |message|
13
+ message["Records"].map do |record|
14
+ ActiveSupport::HashWithIndifferentAccess.new(record)
15
+ end
16
+ end.flatten
17
+ end
18
+ alias s3_event_payloads s3_events
19
+
20
+ def s3_events?
21
+ event["Records"]&.any? { |r| r.dig("Sns", "Message") }
22
+ end
23
+ alias s3_event_payloads? s3_events?
24
+
25
+ def s3_objects
26
+ s3_events.map do |record|
27
+ record["s3"]["object"]
28
+ end
29
+ end
30
+
31
+ def s3_objects?
32
+ s3_events.any? { |r| r.dig("s3", "object") }
33
+ end
34
+
35
+ # Deprecated methods below
36
+ def s3_event
37
+ puts "WARN: s3_event is deprecated".color(:yellow)
38
+ puts "It can possibly drop events when they come in extremely fast."
39
+ puts "Use s3_events instead"
40
+ s3_events.first
41
+ end
42
+
43
+ def s3_object
44
+ puts "WARN: s3_object is deprecated".color(:yellow)
45
+ puts "It can possibly drop events when they come in extremely fast."
46
+ puts "Use s3_objects instead"
47
+ s3_objects.first
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,26 @@
1
+ module Jets::Job::Helpers
2
+ module SnsEvent
3
+ def sns_events
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))
9
+ end
10
+ end
11
+ alias sns_event_payloads sns_events
12
+
13
+ def sns_events?
14
+ event["Records"]&.any? { |r| r.dig("Sns", "Message") }
15
+ end
16
+ alias sns_event_payloads? sns_events?
17
+
18
+ # Deprecated methods below
19
+ def sns_event_payload
20
+ puts "WARN: sns_event_payload is deprecated".color(:yellow)
21
+ puts "It can possibly drop events when they come in extremely fast."
22
+ puts "Use sns_events instead"
23
+ sns_events.first
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module Jets::Job::Helpers
2
+ module SqsEvent
3
+ def sqs_events
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
10
+ end
11
+ alias sqs_event_payloads sqs_events
12
+
13
+ def sqs_events?
14
+ event["Records"]&.any? { |r| r.dig("body") }
15
+ end
16
+ alias sqs_event_payloads? sqs_events?
17
+
18
+ # Deprecated methods below
19
+ def sqs_event_payload
20
+ puts "WARN: sqs_event_payload is deprecated".color(:yellow)
21
+ puts "It can possibly drop events when they come in extremely fast."
22
+ puts "Use sqs_events instead"
23
+ sqs_events.first
24
+ end
25
+ end
26
+ end
@@ -56,6 +56,8 @@ class Jets::Stack
56
56
 
57
57
  # Internal flag is mainly used to disable WARN messages
58
58
  def internal?
59
+ return true if internal_search_expression.include?("jets/base_path")
60
+ return true if internal_search_expression.include?("jets/s3_bucket_config")
59
61
  !!Dir.glob(internal_search_expression).first
60
62
  end
61
63
 
@@ -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.8"
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.8
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
@@ -1039,11 +1039,11 @@ files:
1039
1039
  - lib/jets/job/dsl/s3_event.rb
1040
1040
  - lib/jets/job/dsl/sns_event.rb
1041
1041
  - lib/jets/job/dsl/sqs_event.rb
1042
- - lib/jets/job/helpers/kinesis_event_helper.rb
1043
- - lib/jets/job/helpers/log_event_helper.rb
1044
- - lib/jets/job/helpers/s3_event_helper.rb
1045
- - lib/jets/job/helpers/sns_event_helper.rb
1046
- - lib/jets/job/helpers/sqs_event_helper.rb
1042
+ - lib/jets/job/helpers/kinesis_event.rb
1043
+ - lib/jets/job/helpers/log_event.rb
1044
+ - lib/jets/job/helpers/s3_event.rb
1045
+ - lib/jets/job/helpers/sns_event.rb
1046
+ - lib/jets/job/helpers/sqs_event.rb
1047
1047
  - lib/jets/klass.rb
1048
1048
  - lib/jets/lambda/definition.rb
1049
1049
  - lib/jets/lambda/dsl.rb
@@ -1,13 +0,0 @@
1
- module Jets::Job::Helpers
2
- module S3EventHelper
3
- def s3_event
4
- message = event["Records"][0]["Sns"]["Message"]
5
- h = JSON.load(message)
6
- ActiveSupport::HashWithIndifferentAccess.new(h)
7
- end
8
-
9
- def s3_object
10
- s3_event["Records"][0]["s3"]["object"]
11
- end
12
- end
13
- end
@@ -1,8 +0,0 @@
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))
6
- end
7
- end
8
- end
@@ -1,8 +0,0 @@
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
7
- end
8
- end