judoscale-ruby 1.5.4 → 1.7.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: 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: []