jets-rails 1.0.2 → 1.1.0

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: bcb437fe35d6afd12777e624162887614d2cca7da551d17897175d490c639178
4
- data.tar.gz: 7f40b923cdfcf86d790c413018fbe616b0273aa597619322a771b3a3164de3bd
3
+ metadata.gz: 91030594fed4848d30a8a55d3d68d7c850098e24a5962d101f2eb3e15985d1f6
4
+ data.tar.gz: 2b5e1a889f0e8bf54bb526f2040dec2b250d193a37c3f24905e3f46628aceb82
5
5
  SHA512:
6
- metadata.gz: 1301a0fbb86830da29abf6e02a6a0fc8f21aa85dfb2a3b959ae4cb81ea707a6711f9b9b8fc923a255c691c656108031ec309da2a35fffe5d066deb5891cf1c47
7
- data.tar.gz: f000b9c1fd5eadb96d17a45e00668dba997f7e8f72505d009fd45fa38dd77a3fc4f6e168887e5ecf7514fcf4220611c5d1f241c4d9618ec4aad1395a5a570a42
6
+ metadata.gz: 5b3eea513b43fbd728dbe8e2136cc6d0c519c4929c468e4444c573dda16d86cfe0ac719c9a0ff30068377da63da3433a9dc0bd31bc7605c56083fed9b7b836bc
7
+ data.tar.gz: 3f589e0f1f016db3ca1f70c10e8f435256d38e7acf7ee33324815a9988e935f9870ae0ef9a2db4378b5fc2180625707bb5ea4491bb8b7d51a5ac59a26b00f3ab
data/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
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
+
9
+ ## [1.0.3] - 2024-05-29
10
+ - [#13](https://github.com/rubyonjets/jets-rails/pull/13) update gem pin rails >= 5.0
11
+
6
12
  ## [1.0.2] - 2024-05-27
7
13
  - [#12](https://github.com/rubyonjets/jets-rails/pull/12) fix queue_url lookup when local
8
14
 
@@ -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.2"
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.2
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-27 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
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '6.1'
75
+ version: '5.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '6.1'
82
+ version: '5.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rainbow
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -149,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
149
  - !ruby/object:Gem::Version
150
150
  version: '0'
151
151
  requirements: []
152
- rubygems_version: 3.5.10
152
+ rubygems_version: 3.4.19
153
153
  signing_key:
154
154
  specification_version: 4
155
155
  summary: Jets Rails Support