jets-rails 1.0.3 → 1.1.0

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: 9634650074baa478633a15b009ab9364024d5634600742bd6d265bd30b1d3b7b
4
- data.tar.gz: ea3fd583993fcb9235096cc47d30885131903265f481bd69a50d97b5a74e5e12
3
+ metadata.gz: 91030594fed4848d30a8a55d3d68d7c850098e24a5962d101f2eb3e15985d1f6
4
+ data.tar.gz: 2b5e1a889f0e8bf54bb526f2040dec2b250d193a37c3f24905e3f46628aceb82
5
5
  SHA512:
6
- metadata.gz: 7cb7fb585a8a777082d8243a9ab96316f34fb489a48dc69b65c6c77b78257fb0d2096cc0b4730375651d699e5549c99018ad1875119d66806b76e0dbce3c76b8
7
- data.tar.gz: d84fe1e1f4b7fbf874ce052e59ab5903af98be03d2d1d761fdb910f744101e5d48b4bd7ae5c1d349357f1ee9594bedbdadae00d8ed078dacc65094d219b11e42
6
+ metadata.gz: 5b3eea513b43fbd728dbe8e2136cc6d0c519c4929c468e4444c573dda16d86cfe0ac719c9a0ff30068377da63da3433a9dc0bd31bc7605c56083fed9b7b836bc
7
+ data.tar.gz: 3f589e0f1f016db3ca1f70c10e8f435256d38e7acf7ee33324815a9988e935f9870ae0ef9a2db4378b5fc2180625707bb5ea4491bb8b7d51a5ac59a26b00f3ab
data/CHANGELOG.md CHANGED
@@ -3,6 +3,9 @@
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
+ ## [1.1.0] - 2024-05-30
7
+ - [#14](https://github.com/rubyonjets/jets-rails/pull/14) multiple queue support
8
+
6
9
  ## [1.0.3] - 2024-05-29
7
10
  - [#13](https://github.com/rubyonjets/jets-rails/pull/13) update gem pin rails >= 5.0
8
11
 
@@ -2,31 +2,37 @@ class Jets::Rails::Job::Queue
2
2
  class Check
3
3
  class Error < StandardError; end
4
4
 
5
- class << self
6
- include Jets::Util::Logging
7
-
8
- @@error_message = "ERROR: Unable to get queue url".color(:red)
9
- def exist!
10
- job_enable!
11
- existance!
12
- end
13
-
14
- def existance!
15
- return if Url.queue_url
16
-
17
- log.error @@error_message
18
- raise Error, "Are you sure you have deployed with Jets.project.config.job.enable = true ?"
19
- rescue Jets::Api::Error::NotFound
20
- log.error @@error_message
21
- raise Error, "It does not look like the stack has successfully deployed. Please deploy first."
22
- end
23
-
24
- def job_enable!
25
- return if Url.queue_url
26
-
27
- log.error @@error_message
28
- raise Error, "Are you sure that config.job.enable = true ?"
29
- end
5
+ include Jets::Util::Logging
6
+
7
+ def initialize(job)
8
+ @job = job
9
+ end
10
+
11
+ @@error_message = "ERROR: Unable to get queue url".color(:red)
12
+ def exist!
13
+ job_enable_message
14
+ existance!
15
+ end
16
+
17
+ def queue_url
18
+ Url.queue_url(@job.queue_name)
19
+ end
20
+
21
+ def existance!
22
+ return if queue_url
23
+
24
+ log.error @@error_message
25
+ raise Error, "Are you sure you have deployed with Jets.project.config.job.enable = true ?"
26
+ rescue Jets::Api::Error::NotFound
27
+ log.error @@error_message
28
+ raise Error, "It does not look like the stack has successfully deployed. Please deploy first."
29
+ end
30
+
31
+ def job_enable_message
32
+ return if queue_url
33
+
34
+ log.error @@error_message
35
+ raise Error, "Are you sure that config.job.enable = true ?"
30
36
  end
31
37
  end
32
38
  end
@@ -3,27 +3,47 @@ class Jets::Rails::Job::Queue
3
3
  class << self
4
4
  extend Memoist
5
5
 
6
- def queue_url
7
- # On AWS Lambda JETS_JOB_QUEUE_URL will be set
6
+ def queue_url(queue_name)
7
+ # On AWS Lambda JETS_QUEUE_URL must be set
8
8
  # It must be set when on AWS to avoid the API call to retrieve the queue_url
9
- return ENV["JETS_JOB_QUEUE_URL"] if ENV["JETS_JOB_QUEUE_URL"]
9
+ env_var = "JETS_QUEUE_URL_#{queue_name.upcase}" # IE: JETS_QUEUE_URL_DEFAULT
10
+ if ENV["AWS_LAMBDA_FUNCTION_NAME"]
11
+ if ENV[env_var] # queue_url
12
+ return ENV[env_var]
13
+ else
14
+ # Not never happen on AWS Lambda
15
+ # Unless env var is removed from the lambda function
16
+ puts <<~EOL
17
+ WARN: JETS_QUEUE_URL_#{queue_name.upcase} not set. Unable to get queue url.
18
+ Maybe double check for:
10
19
 
11
- # Locally when JETS_JOB_QUEUE_URL will try getting the latest release from API
20
+ config/jets/deploy.rb
21
+
22
+ config.job.additional_queues = ["#{queue_name}"]
23
+
24
+ A queue name must be defined for the SQS queue to be created.
25
+ EOL
26
+ end
27
+ end
28
+
29
+ # Locally can also be set to avoid the API call for testing
30
+ return ENV[env_var] if ENV[env_var]
31
+
32
+ # Only reach here locally.
33
+ # Will try getting queue url from API latest release
12
34
  # 1. can be nil
13
35
  # 2. can raise NotFound error
14
- begin
15
- resp = Jets::Api::Release.retrieve("latest")
16
- endpoint = resp.endpoints.find { |x| x["name"] == "queue_url" }
17
- endpoint&.url
18
- rescue Jets::Api::Error::NotFound => e
19
- puts "WARN: Unable to get queue url from API: #{e.message}".color(:yellow)
20
- puts <<~EOL
21
- INFO: You can set JETS_JOB_QUEUE_URL in your environment to avoid this API call.
22
- Locally, jets will try to get the latest release from the API to get the queue_url.
23
- This will only work if the stack has been deployed successfully.
24
- EOL
25
- raise
26
- end
36
+ resp = Jets::Api::Release.retrieve("latest")
37
+ endpoint = resp.endpoints.find { |x| x["name"] == "queue_url_#{queue_name}" }
38
+ endpoint&.url
39
+ rescue Jets::Api::Error::NotFound => e
40
+ puts "WARN: Unable to get queue url from API: #{e.message}".color(:yellow)
41
+ puts <<~EOL
42
+ INFO: You can set #{env_var} in your environment to avoid this API call.
43
+ Locally, jets will try to get the latest release from the API to get the queue_url.
44
+ This will only work if the stack has been deployed successfully.
45
+ EOL
46
+ raise
27
47
  end
28
48
  memoize :queue_url
29
49
  end
@@ -6,7 +6,6 @@ module Jets::Rails::Job
6
6
 
7
7
  extend Memoist
8
8
  include Jets::Util::Logging
9
- delegate :queue_url, to: Url
10
9
 
11
10
  attr_reader :job, :timestamp
12
11
  def initialize(job, timestamp = nil)
@@ -15,7 +14,7 @@ module Jets::Rails::Job
15
14
  end
16
15
 
17
16
  def enqueue
18
- Check.exist!
17
+ Check.new(@job).exist!
19
18
 
20
19
  params = {
21
20
  queue_url: queue_url,
@@ -35,6 +34,11 @@ module Jets::Rails::Job
35
34
  queue_url.include?(".fifo")
36
35
  end
37
36
 
37
+ def queue_url
38
+ Url.queue_url(@job.queue_name)
39
+ end
40
+ memoize :queue_url
41
+
38
42
  def fifo_params
39
43
  options = {}
40
44
  options[:message_deduplication_id] = message_deduplication_id
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jets
4
4
  module Rails
5
- VERSION = "1.0.3"
5
+ VERSION = "1.1.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jets-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-29 00:00:00.000000000 Z
11
+ date: 2024-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport