judoscale-ruby 1.5.4 → 1.7.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: 9a17218dc3944b21fbfcf5a18762612429b4d8b2de36f9f8010bf96ed07ac087
4
- data.tar.gz: 48956e0efd8da735602891cca733be434077d6c29bd5f0d9ed51954163d82d80
3
+ metadata.gz: '06194dfe279e17d98193bfaeca3cb8062c49013bcc8b3b6acfa41d008df0a2f1'
4
+ data.tar.gz: 11848e472c87771c4dc3be406c33bbb93ad60f6ba9a7ea7dd2cafd09c147e98e
5
5
  SHA512:
6
- metadata.gz: 99a4d3572a99ef3314a70c31051d5439dc604fc478d12fa6b1323ed1c6464776b4c46c5e21fc450bb2a16b22c23c328fb0027c42c8e7d58985198e180510b5d9
7
- data.tar.gz: df203f658ae71c4380841de2db1eb5178acb77d48ce431e3aec7fa6cfe6a3a240731e75741574a65afa2b5bcbe918ab9a25f03ffd28c4dc0d963ce7bab8e9a88
6
+ metadata.gz: 111005d7d66e4d649046d27e810ed3ab231a59d7a766f810d471ba3fd79ef2964598fd59a11a41c6734329f33a322827c0c811847f1aa398e49898cb581f9765
7
+ data.tar.gz: cc0c3826fafa4055375e798a90c716dd725e41e5826bcd713782b389567ab1ffaa4709bee20b1f2240c3fb7b301a03af81ff88f7e1c52b5334ca7244aaf23c16
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["Adam McCrea", "Carlos Antonio da Silva", "Jon Sullivan"]
9
9
  spec.email = ["hello@judoscale.com"]
10
10
 
11
- spec.summary = "This gem works with the Judoscale Heroku add-on to automatically scale your web and worker dynos."
11
+ spec.summary = "Autoscaling for Ruby."
12
12
  spec.homepage = "https://judoscale.com"
13
13
  spec.license = "MIT"
14
14
 
@@ -20,10 +20,12 @@ module Judoscale
20
20
  UUID_REGEXP = /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/
21
21
  DEFAULT_QUEUE_FILTER = ->(queue_name) { !UUID_REGEXP.match?(queue_name) }
22
22
 
23
- attr_accessor :identifier, :enabled, :max_queues, :queues, :queue_filter, :track_busy_jobs
23
+ attr_accessor :identifier, :enabled, :max_queues, :queues, :queue_filter
24
+ attr_reader :track_busy_jobs
24
25
 
25
- def initialize(identifier)
26
+ def initialize(identifier, support_busy_jobs: true)
26
27
  @identifier = identifier
28
+ @support_busy_jobs = support_busy_jobs
27
29
  reset
28
30
  end
29
31
 
@@ -34,7 +36,15 @@ module Judoscale
34
36
 
35
37
  # Support for deprecated legacy env var configs.
36
38
  @max_queues = (ENV["RAILS_AUTOSCALE_MAX_QUEUES"] || 20).to_i
37
- @track_busy_jobs = ENV["RAILS_AUTOSCALE_LONG_JOBS"] == "true"
39
+ self.track_busy_jobs = ENV["RAILS_AUTOSCALE_LONG_JOBS"] == "true"
40
+ end
41
+
42
+ def track_busy_jobs=(value)
43
+ if value && !@support_busy_jobs
44
+ raise "[#{Config.instance.log_tag}] #{identifier} does not support busy jobs"
45
+ end
46
+
47
+ @track_busy_jobs = value
38
48
  end
39
49
 
40
50
  def as_json
@@ -72,26 +72,17 @@ module Judoscale
72
72
  @_thread&.terminate
73
73
  @_thread = nil
74
74
  @pid = nil
75
- @reported = false
76
75
  end
77
76
 
78
77
  private
79
78
 
80
79
  def report(config, metrics)
81
- # Make sure we report at least once, even if there are no metrics,
82
- # so Judoscale knows the adapter is installed and running.
83
- if @reported && metrics.empty?
84
- logger.debug "No metrics to report - skipping"
85
- return
86
- end
87
-
88
80
  report = Report.new(Judoscale.adapters, config, metrics)
89
81
  logger.info "Reporting #{report.metrics.size} metrics"
90
82
  result = AdapterApi.new(config).report_metrics(report.as_json)
91
83
 
92
84
  case result
93
85
  when AdapterApi::SuccessResponse
94
- @reported = true
95
86
  logger.debug "Reported successfully"
96
87
  when AdapterApi::FailureResponse
97
88
  logger.error "Reporter failed: #{result.failure_message}"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Judoscale
4
- VERSION = "1.5.4"
4
+ VERSION = "1.7.0"
5
5
  end
@@ -4,7 +4,7 @@ require "judoscale/config"
4
4
  require "judoscale/version"
5
5
 
6
6
  module Judoscale
7
- # Allows configuring Rails Autoscale through a block, usually defined during application initialization.
7
+ # Allows configuring Judoscale through a block, usually defined during application initialization.
8
8
  #
9
9
  # Example:
10
10
  #
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["Adam McCrea", "Carlos Antonio da Silva", "Jon Sullivan"]
9
9
  spec.email = ["hello@judoscale.com"]
10
10
 
11
- spec.summary = "This gem works with the Judoscale Heroku add-on to automatically scale your web and worker dynos."
11
+ spec.summary = "Autoscaling for Ruby."
12
12
  spec.homepage = "https://judoscale.com"
13
13
  spec.license = "MIT"
14
14
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: judoscale-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.4
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam McCrea
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-02-07 00:00:00.000000000 Z
13
+ date: 2024-05-03 00:00:00.000000000 Z
14
14
  dependencies: []
15
15
  description:
16
16
  email:
@@ -66,6 +66,5 @@ requirements: []
66
66
  rubygems_version: 3.4.10
67
67
  signing_key:
68
68
  specification_version: 4
69
- summary: This gem works with the Judoscale Heroku add-on to automatically scale your
70
- web and worker dynos.
69
+ summary: Autoscaling for Ruby.
71
70
  test_files: []