jets 5.0.7 → 5.0.9

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: e04f05b1acc2261aa805569fce675ac41b87de70487156b625ddc1beedad957a
4
- data.tar.gz: 4f89a28661441ff74bf7cb98b90eef08583fe18e20ba72472240e41f942b8ff2
3
+ metadata.gz: '094fcef1e3f074fb9e70284e71928a9573ace2c2698dfa1d7771929c14143cc1'
4
+ data.tar.gz: 99bf0fe5ff1d74b1f77f55249022fa857f61daf0e54d93d9f18cfa3fde8d3113
5
5
  SHA512:
6
- metadata.gz: 189e8b589c09a258329a7f0d29ac52759a854e75ddafa312716e93359689ee87946c7cecb8cbb720e0046042e0358fd7086ef2b011ecb2929014f0c371352548
7
- data.tar.gz: 5f2adbfc890b6a0346a998463fa3d297138aebe570576d1f2d3f782456da5c4384151043f9b241a966c6fcfcf3b2fb2ffda49c129ea43a3581513422f85e42fa
6
+ metadata.gz: 91eb6f101f26f4e48c5f201240ae658d92cb92518e6a8f1a84b76a9681e0302401f0251bffe9755b6326b85ea1eab70878ac573ca381bb789e9abeea8c4207bf
7
+ data.tar.gz: 62dad308974fdecb2dcad03c937f0fc30588090f15d8ed18db6170feebb88630f880ae8ea79f8ce5307211f0ec2e1daecda13e65881c3f7b80d67a73e3f835a6
data/CHANGELOG.md CHANGED
@@ -3,6 +3,13 @@
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.9] - 2024-01-08
7
+ - [#704](https://github.com/rubyonjets/jets/pull/704) fix jets --version outside of jets project
8
+ - update jets generate job scheduled template JSON.dump
9
+
10
+ ## [5.0.8] - 2023-12-24
11
+ - [#702](https://github.com/rubyonjets/jets/pull/702) prettier event helpers IE: s3_events vs s3_event_payloads
12
+
6
13
  ## [5.0.7] - 2023-12-24
7
14
  - [#699](https://github.com/rubyonjets/jets/pull/699) cache Stack.lookup output in class memory
8
15
  - [#700](https://github.com/rubyonjets/jets/pull/700) update s3 sns and sqs event helpers to return all events
@@ -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
@@ -17,6 +17,12 @@ module Jets
17
17
  # bundle exec jets application => jets new --help
18
18
  #
19
19
  def perform(*args)
20
+ version_flags = %w[-v --version] & args
21
+ unless version_flags.empty?
22
+ puts "Jets #{Jets::VERSION}"
23
+ return
24
+ end
25
+
20
26
  # require lazily so that Rails constant is only defined within generators
21
27
  require "jets/generators/overrides/app/app_generator"
22
28
  override_exit_on_failure?
@@ -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)
@@ -2,7 +2,7 @@
2
2
  class <%= class_name %>Job < ApplicationJob
3
3
  rate "10 hours"
4
4
  def <%= options[:name] %>
5
- puts "Do something with event #{event}"
5
+ puts "Do something with event #{JSON.dump(event)}"
6
6
  end
7
7
  end
8
8
  <% 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|
@@ -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)
@@ -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
@@ -1,6 +1,6 @@
1
1
  module Jets::Job::Helpers
2
- module SnsEventHelper
3
- def sns_event_payloads
2
+ module SnsEvent
3
+ def sns_events
4
4
  records = event["Records"]
5
5
  return [] unless records
6
6
  records.map do |record|
@@ -8,17 +8,19 @@ module Jets::Job::Helpers
8
8
  ActiveSupport::HashWithIndifferentAccess.new(JSON.load(message))
9
9
  end
10
10
  end
11
+ alias sns_event_payloads sns_events
11
12
 
12
- def sns_event_payloads?
13
+ def sns_events?
13
14
  event["Records"]&.any? { |r| r.dig("Sns", "Message") }
14
15
  end
16
+ alias sns_event_payloads? sns_events?
15
17
 
16
18
  # Deprecated methods below
17
19
  def sns_event_payload
18
20
  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
21
+ puts "It can possibly drop events when they come in extremely fast."
22
+ puts "Use sns_events instead"
23
+ sns_events.first
22
24
  end
23
25
  end
24
26
  end
@@ -1,6 +1,6 @@
1
1
  module Jets::Job::Helpers
2
- module SqsEventHelper
3
- def sqs_event_payloads
2
+ module SqsEvent
3
+ def sqs_events
4
4
  records = event["Records"]
5
5
  return [] unless records
6
6
  records.map do |record|
@@ -8,17 +8,19 @@ module Jets::Job::Helpers
8
8
  ActiveSupport::HashWithIndifferentAccess.new(JSON.load(message))
9
9
  end
10
10
  end
11
+ alias sqs_event_payloads sqs_events
11
12
 
12
- def sqs_event_payloads?
13
+ def sqs_events?
13
14
  event["Records"]&.any? { |r| r.dig("body") }
14
15
  end
16
+ alias sqs_event_payloads? sqs_events?
15
17
 
16
18
  # Deprecated methods below
17
19
  def sqs_event_payload
18
20
  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
21
+ puts "It can possibly drop events when they come in extremely fast."
22
+ puts "Use sqs_events instead"
23
+ sqs_events.first
22
24
  end
23
25
  end
24
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
 
data/lib/jets/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Jets
2
- VERSION = "5.0.7"
2
+ VERSION = "5.0.9"
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.7
4
+ version: 5.0.9
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-24 00:00:00.000000000 Z
11
+ date: 2024-01-08 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,45 +0,0 @@
1
- module Jets::Job::Helpers
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
31
- def s3_event
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
36
- end
37
-
38
- def 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
43
- end
44
- end
45
- end