judoscale-ruby 1.0.0.rc2 → 1.1.1

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: 6ec3b89458d553902b60287bec9c3d5a86db77bc17d525264733e35da6bc4447
4
- data.tar.gz: ce7fa95c5d69b38f84afe75bb24ab51f07687299eadd112945d2eed75d7c2607
3
+ metadata.gz: 06d6051251ff5f628677d931e240a35ce4f93ec8409d3e9ba8e539ec300a96d6
4
+ data.tar.gz: ce94920cc35eff9f6cf328df39c84e2f0a25bd681422ab8111434311ba33cbc4
5
5
  SHA512:
6
- metadata.gz: 01bc6d8713dec20c578fdcbf3dd91cbcf3cf6c1894e7431773d26b4f1fc63fd8b45d5170e8ad47a43b905d0a56f53e0c1f8ab7192056ac10f1bcd11b9d809b44
7
- data.tar.gz: 227e0a5a91a4f7389d72a0b34fb8b19627616c3f8e772bf05c921f2ed761233e1ff0ff4d4cc937993c35fa92fff660252bd743202a690a4460050df34277c142
6
+ metadata.gz: 21110c610a6619f3750901aade4e3a2bef813d16cfb78956225972d7b57f5769769419dcd0bf2a5d1933bf8e0760601ae35cc81d0b84078bd4232f4fadacca1d
7
+ data.tar.gz: f5f7f33785b2f0554907abce78bc0e6e10dd1e2ebf773e2b5ae9fb366fa30a024de89477ee542b43c2ac09e7fcae49db944bfe879529ae0beb2dbc652f4051c5
data/Gemfile CHANGED
@@ -1,7 +1,9 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gemspec
3
+ gemspec name: "judoscale-ruby"
4
4
 
5
5
  gem "rake", ">= 12.3.3"
6
+ gem "rake-release"
6
7
  gem "minitest"
7
8
  gem "webmock"
9
+ gem "debug"
data/Gemfile.lock CHANGED
@@ -1,21 +1,31 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- judoscale-ruby (1.0.0.rc2)
4
+ judoscale-ruby (1.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- addressable (2.8.0)
10
- public_suffix (>= 2.0.2, < 5.0)
9
+ addressable (2.8.1)
10
+ public_suffix (>= 2.0.2, < 6.0)
11
11
  crack (0.4.5)
12
12
  rexml
13
+ debug (1.4.0)
14
+ irb (>= 1.3.6)
15
+ reline (>= 0.2.7)
13
16
  hashdiff (1.0.1)
17
+ io-console (0.5.11)
18
+ irb (1.4.1)
19
+ reline (>= 0.3.0)
14
20
  minitest (5.15.0)
15
- public_suffix (4.0.6)
21
+ public_suffix (5.0.0)
16
22
  rake (13.0.6)
23
+ rake-release (1.3.0)
24
+ bundler (>= 1.11, < 3)
25
+ reline (0.3.1)
26
+ io-console (~> 0.5)
17
27
  rexml (3.2.5)
18
- webmock (3.14.0)
28
+ webmock (3.18.1)
19
29
  addressable (>= 2.8.0)
20
30
  crack (>= 0.3.2)
21
31
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -27,9 +37,11 @@ PLATFORMS
27
37
  x86_64-linux
28
38
 
29
39
  DEPENDENCIES
40
+ debug
30
41
  judoscale-ruby!
31
42
  minitest
32
43
  rake (>= 12.3.3)
44
+ rake-release
33
45
  webmock
34
46
 
35
47
  BUNDLED WITH
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/gem_tasks"
3
+ require "rake/release"
4
4
  require "rake/testtask"
5
5
 
6
6
  Rake::TestTask.new(:test) do |t|
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "judoscale/config"
4
- require "judoscale/version"
3
+ require "rails_autoscale/config"
4
+ require "rails_autoscale/version"
5
5
 
6
- module Judoscale
7
- # Allows configuring Judoscale through a block, usually defined during application initialization.
6
+ module RailsAutoscale
7
+ # Allows configuring Rails Autoscale through a block, usually defined during application initialization.
8
8
  #
9
9
  # Example:
10
10
  #
11
- # Judoscale.configure do |config|
11
+ # RailsAutoscale.configure do |config|
12
12
  # config.logger = MyLogger.new
13
13
  # end
14
14
  def self.configure
@@ -31,8 +31,10 @@ module Judoscale
31
31
  @adapters << Adapter.new(identifier, adapter_info, metrics_collector)
32
32
  end
33
33
 
34
- add_adapter :"judoscale-ruby", {
34
+ add_adapter :"rails-autoscale-core", {
35
35
  adapter_version: VERSION,
36
36
  language_version: RUBY_VERSION
37
37
  }
38
38
  end
39
+
40
+ Judoscale = RailsAutoscale
@@ -3,9 +3,9 @@
3
3
  require "net/http"
4
4
  require "uri"
5
5
  require "json"
6
- require "judoscale/logger"
6
+ require "rails_autoscale/logger"
7
7
 
8
- module Judoscale
8
+ module RailsAutoscale
9
9
  class AdapterApi
10
10
  include Logger
11
11
 
@@ -27,6 +27,7 @@ module Judoscale
27
27
  end
28
28
 
29
29
  def post_raw(options)
30
+ attempts ||= 1
30
31
  uri = URI.parse("#{@config.api_base_url}#{options.fetch(:path)}")
31
32
  ssl = uri.scheme == "https"
32
33
 
@@ -42,6 +43,15 @@ module Judoscale
42
43
  when 200...300 then SuccessResponse.new(response.body)
43
44
  else FailureResponse.new([response.code, response.message].join(" - "))
44
45
  end
46
+ rescue Net::OpenTimeout
47
+ if attempts < 3
48
+ # TCP timeouts happen sometimes, but they can usually be successfully retried in a moment
49
+ sleep 0.01
50
+ attempts += 1
51
+ retry
52
+ else
53
+ FailureResponse.new("Timeout while obtaining TCP connection to #{uri.host}")
54
+ end
45
55
  end
46
56
 
47
57
  class SuccessResponse < Struct.new(:body)
@@ -3,7 +3,7 @@
3
3
  require "singleton"
4
4
  require "logger"
5
5
 
6
- module Judoscale
6
+ module RailsAutoscale
7
7
  class Config
8
8
  class Dyno
9
9
  attr_reader :name, :num
@@ -31,10 +31,12 @@ module Judoscale
31
31
 
32
32
  def reset
33
33
  @enabled = true
34
- @max_queues = 20
35
34
  @queues = []
36
35
  @queue_filter = DEFAULT_QUEUE_FILTER
37
- @track_busy_jobs = false
36
+
37
+ # Support for deprecated legacy env var configs.
38
+ @max_queues = (ENV["RAILS_AUTOSCALE_MAX_QUEUES"] || 20).to_i
39
+ @track_busy_jobs = ENV["RAILS_AUTOSCALE_LONG_JOBS"] == "true"
38
40
  end
39
41
 
40
42
  def as_json
@@ -64,7 +66,7 @@ module Judoscale
64
66
  end
65
67
  end
66
68
 
67
- attr_accessor :api_base_url, :report_interval_seconds, :max_request_size_bytes, :logger
69
+ attr_accessor :api_base_url, :report_interval_seconds, :max_request_size_bytes, :logger, :log_tag
68
70
  attr_reader :dyno, :log_level
69
71
 
70
72
  def initialize
@@ -73,11 +75,12 @@ module Judoscale
73
75
 
74
76
  def reset
75
77
  # Allow the API URL to be configured - needed for testing.
76
- @api_base_url = ENV["JUDOSCALE_URL"]
78
+ @api_base_url = ENV["RAILS_AUTOSCALE_URL"] || ENV["JUDOSCALE_URL"]
79
+ @log_tag = ENV["JUDOSCALE_URL"] ? "Judoscale" : "RailsAutoscale"
77
80
  self.dyno = ENV["DYNO"]
78
81
  @max_request_size_bytes = 100_000 # ignore request payloads over 100k since they skew the queue times
79
82
  @report_interval_seconds = 10
80
- self.log_level = ENV["JUDOSCALE_LOG_LEVEL"]
83
+ self.log_level = ENV["RAILS_AUTOSCALE_LOG_LEVEL"] || ENV["JUDOSCALE_LOG_LEVEL"]
81
84
  @logger = ::Logger.new($stdout)
82
85
 
83
86
  self.class.adapter_configs.each(&:reset)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Judoscale
3
+ module RailsAutoscale
4
4
  class JobMetricsCollector
5
5
  module ActiveRecordHelper
6
6
  # Cleanup any whitespace characters (including new lines) from the SQL for simpler logging.
@@ -24,7 +24,7 @@ module Judoscale
24
24
 
25
25
  def select_rows_tagged(sql)
26
26
  if ActiveRecord::Base.logger.respond_to?(:tagged)
27
- ActiveRecord::Base.logger.tagged(Judoscale::LoggerProxy::TAG) { select_rows(sql) }
27
+ ActiveRecord::Base.logger.tagged(Config.instance.log_tag) { select_rows(sql) }
28
28
  else
29
29
  select_rows(sql)
30
30
  end
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "set"
4
- require "judoscale/metrics_collector"
5
- require "judoscale/logger"
4
+ require "rails_autoscale/metrics_collector"
5
+ require "rails_autoscale/logger"
6
6
 
7
- module Judoscale
7
+ module RailsAutoscale
8
8
  class JobMetricsCollector < MetricsCollector
9
- include Judoscale::Logger
9
+ include RailsAutoscale::Logger
10
10
 
11
11
  # It's redundant to report these metrics from every dyno, so only report from the first one.
12
12
  def self.collect?(config)
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "judoscale/config"
3
+ require "rails_autoscale/config"
4
4
  require "logger"
5
5
 
6
- module Judoscale
6
+ module RailsAutoscale
7
7
  module Logger
8
8
  def logger
9
9
  @logger ||= LoggerProxy.new(Config.instance.logger, Config.instance.log_level)
@@ -11,19 +11,20 @@ module Judoscale
11
11
  end
12
12
 
13
13
  class LoggerProxy < Struct.new(:logger, :log_level)
14
- TAG = "Judoscale"
15
-
16
- %w[ERROR WARN INFO DEBUG].each do |severity_name|
14
+ %w[ERROR WARN INFO DEBUG FATAL].each do |severity_name|
17
15
  severity_level = ::Logger::Severity.const_get(severity_name)
18
16
 
19
17
  define_method(severity_name.downcase) do |*messages|
20
18
  if log_level.nil?
21
- logger.add(severity_level) { tag(messages) }
19
+ logger.public_send(severity_name.downcase) { tag(messages) }
22
20
  elsif severity_level >= log_level
23
21
  if severity_level >= logger.level
24
- logger.add(severity_level) { tag(messages) }
22
+ logger.public_send(severity_name.downcase) { tag(messages) }
25
23
  else
26
- logger.add(logger.level) { tag(messages, tag_level: severity_name) }
24
+ # Our logger proxy is configured with a lower severity level than the underlying logger,
25
+ # so send this message using the underlying logger severity instead of the actual severity.
26
+ logger_severity_name = ::Logger::SEV_LABEL[logger.level].downcase
27
+ logger.public_send(logger_severity_name) { tag(messages, tag_level: severity_name) }
27
28
  end
28
29
  end
29
30
  end
@@ -32,7 +33,7 @@ module Judoscale
32
33
  private
33
34
 
34
35
  def tag(msgs, tag_level: nil)
35
- tag = +"[#{TAG}]"
36
+ tag = +"[#{Config.instance.log_tag}]"
36
37
  tag << " [#{tag_level}]" if tag_level
37
38
  msgs.map { |msg| "#{tag} #{msg}" }.join("\n")
38
39
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Judoscale
3
+ module RailsAutoscale
4
4
  class Metric < Struct.new(:identifier, :value, :time, :queue_name)
5
5
  # No queue_name is assumed to be a web request metric
6
6
  # Metrics: qt = queue time (default), qd = queue depth, busy
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Judoscale
3
+ module RailsAutoscale
4
4
  class MetricsCollector
5
5
  def self.collect?(config)
6
6
  true
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "singleton"
4
- require "judoscale/metric"
5
- require "judoscale/report"
4
+ require "rails_autoscale/metric"
5
+ require "rails_autoscale/report"
6
6
 
7
- module Judoscale
7
+ module RailsAutoscale
8
8
  class MetricsStore
9
9
  include Singleton
10
10
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Judoscale
3
+ module RailsAutoscale
4
4
  class Report
5
5
  attr_reader :adapters, :config, :metrics
6
6
 
@@ -1,18 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "singleton"
4
- require "judoscale/config"
5
- require "judoscale/logger"
6
- require "judoscale/adapter_api"
7
- require "judoscale/job_metrics_collector"
8
- require "judoscale/web_metrics_collector"
4
+ require "rails_autoscale/config"
5
+ require "rails_autoscale/logger"
6
+ require "rails_autoscale/adapter_api"
7
+ require "rails_autoscale/job_metrics_collector"
8
+ require "rails_autoscale/web_metrics_collector"
9
9
 
10
- module Judoscale
10
+ module RailsAutoscale
11
11
  class Reporter
12
12
  include Singleton
13
13
  include Logger
14
14
 
15
- def self.start(config = Config.instance, adapters = Judoscale.adapters)
15
+ def self.start(config = Config.instance, adapters = RailsAutoscale.adapters)
16
16
  instance.start!(config, adapters) unless instance.started?
17
17
  end
18
18
 
@@ -20,7 +20,7 @@ module Judoscale
20
20
  @pid = Process.pid
21
21
 
22
22
  if !config.api_base_url
23
- logger.info "Reporter not started: JUDOSCALE_URL is not set"
23
+ logger.info "Reporter not started: RAILS_AUTOSCALE_URL is not set"
24
24
  return
25
25
  end
26
26
 
@@ -76,7 +76,7 @@ module Judoscale
76
76
  private
77
77
 
78
78
  def report(config, metrics)
79
- report = Report.new(Judoscale.adapters, config, metrics)
79
+ report = Report.new(RailsAutoscale.adapters, config, metrics)
80
80
  logger.info "Reporting #{report.metrics.size} metrics"
81
81
  result = AdapterApi.new(config).report_metrics(report.as_json)
82
82
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Judoscale
3
+ module RailsAutoscale
4
4
  class RequestMetrics
5
5
  attr_reader :request_id, :size, :network_time
6
6
 
@@ -36,7 +36,7 @@ module Judoscale
36
36
  queue_time -= network_time
37
37
 
38
38
  # Safeguard against negative queue times (should not happen in practice)
39
- queue_time > 0 ? queue_time : 0
39
+ (queue_time > 0) ? queue_time : 0
40
40
  end
41
41
  end
42
42
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "judoscale/metrics_store"
4
- require "judoscale/reporter"
5
- require "judoscale/logger"
6
- require "judoscale/request_metrics"
3
+ require "rails_autoscale/metrics_store"
4
+ require "rails_autoscale/reporter"
5
+ require "rails_autoscale/logger"
6
+ require "rails_autoscale/request_metrics"
7
7
 
8
- module Judoscale
8
+ module RailsAutoscale
9
9
  class RequestMiddleware
10
10
  include Logger
11
11
 
@@ -27,11 +27,11 @@ module Judoscale
27
27
  store = MetricsStore.instance
28
28
 
29
29
  # NOTE: Expose queue time to the app
30
- env["judoscale.queue_time"] = queue_time
30
+ env["rails_autoscale.queue_time"] = queue_time
31
31
  store.push :qt, queue_time
32
32
 
33
33
  unless network_time.zero?
34
- env["judoscale.network_time"] = network_time
34
+ env["rails_autoscale.network_time"] = network_time
35
35
  store.push :nt, network_time
36
36
  end
37
37
 
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAutoscale
4
+ VERSION = "1.1.1"
5
+ end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "judoscale/metrics_collector"
4
- require "judoscale/metrics_store"
3
+ require "rails_autoscale/metrics_collector"
4
+ require "rails_autoscale/metrics_store"
5
5
 
6
- module Judoscale
6
+ module RailsAutoscale
7
7
  class WebMetricsCollector < MetricsCollector
8
8
  def self.collect?(config)
9
9
  config.dyno.name == "web"
@@ -0,0 +1,27 @@
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "rails_autoscale/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "rails-autoscale-core"
7
+ spec.version = RailsAutoscale::VERSION
8
+ spec.authors = ["Adam McCrea", "Carlos Antonio da Silva"]
9
+ spec.email = ["adam@adamlogic.com"]
10
+
11
+ spec.summary = "This gem works with the Rails Autoscale Heroku add-on to automatically scale your web and worker dynos."
12
+ spec.homepage = "https://railsautoscale.com"
13
+ spec.license = "MIT"
14
+
15
+ spec.metadata = {
16
+ "homepage_uri" => "https://railsautoscale.com",
17
+ "bug_tracker_uri" => "https://github.com/rails-autoscale/rails-autoscale-gems/issues",
18
+ "documentation_uri" => "https://railsautoscale.com/docs",
19
+ "changelog_uri" => "https://github.com/rails-autoscale/rails-autoscale-gems/blob/main/CHANGELOG.md",
20
+ "source_code_uri" => "https://github.com/rails-autoscale/rails-autoscale-gems"
21
+ }
22
+
23
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
24
+ spec.require_paths = ["lib"]
25
+
26
+ spec.required_ruby_version = ">= 2.6.0"
27
+ end
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.0.0.rc2
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam McCrea
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-09-07 00:00:00.000000000 Z
12
+ date: 2022-11-23 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description:
15
15
  email:
@@ -21,34 +21,32 @@ files:
21
21
  - Gemfile
22
22
  - Gemfile.lock
23
23
  - Rakefile
24
- - judoscale-ruby.gemspec
25
- - lib/judoscale-ruby.rb
26
- - lib/judoscale/adapter_api.rb
27
- - lib/judoscale/config.rb
28
- - lib/judoscale/job_metrics_collector.rb
29
- - lib/judoscale/job_metrics_collector/active_record_helper.rb
30
- - lib/judoscale/logger.rb
31
- - lib/judoscale/metric.rb
32
- - lib/judoscale/metrics_collector.rb
33
- - lib/judoscale/metrics_store.rb
34
- - lib/judoscale/report.rb
35
- - lib/judoscale/reporter.rb
36
- - lib/judoscale/request_metrics.rb
37
- - lib/judoscale/request_middleware.rb
38
- - lib/judoscale/version.rb
39
- - lib/judoscale/web_metrics_collector.rb
24
+ - lib/rails-autoscale-core.rb
25
+ - lib/rails_autoscale/adapter_api.rb
26
+ - lib/rails_autoscale/config.rb
27
+ - lib/rails_autoscale/job_metrics_collector.rb
28
+ - lib/rails_autoscale/job_metrics_collector/active_record_helper.rb
29
+ - lib/rails_autoscale/logger.rb
30
+ - lib/rails_autoscale/metric.rb
31
+ - lib/rails_autoscale/metrics_collector.rb
32
+ - lib/rails_autoscale/metrics_store.rb
33
+ - lib/rails_autoscale/report.rb
34
+ - lib/rails_autoscale/reporter.rb
35
+ - lib/rails_autoscale/request_metrics.rb
36
+ - lib/rails_autoscale/request_middleware.rb
37
+ - lib/rails_autoscale/version.rb
38
+ - lib/rails_autoscale/web_metrics_collector.rb
39
+ - rails-autoscale-core.gemspec
40
40
  homepage: https://judoscale.com
41
41
  licenses:
42
42
  - MIT
43
43
  metadata:
44
44
  homepage_uri: https://judoscale.com
45
45
  bug_tracker_uri: https://github.com/judoscale/judoscale-ruby/issues
46
- documentation_uri: https://judoscale.com/docs
46
+ documentation_uri: https://railsautoscale.com/docs
47
47
  changelog_uri: https://github.com/judoscale/judoscale-ruby/blob/main/CHANGELOG.md
48
48
  source_code_uri: https://github.com/judoscale/judoscale-ruby
49
- post_install_message: |
50
- `judoscale-ruby` is deprecated! Please migrate to `rails-autoscale-core`.
51
- See https://github.com/rails-autoscale/rails-autoscale-gems for the installation guide.
49
+ post_install_message:
52
50
  rdoc_options: []
53
51
  require_paths:
54
52
  - lib
@@ -59,13 +57,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
59
57
  version: 2.6.0
60
58
  required_rubygems_version: !ruby/object:Gem::Requirement
61
59
  requirements:
62
- - - ">"
60
+ - - ">="
63
61
  - !ruby/object:Gem::Version
64
- version: 1.3.1
62
+ version: '0'
65
63
  requirements: []
66
64
  rubygems_version: 3.2.32
67
65
  signing_key:
68
66
  specification_version: 4
69
- summary: This gem is deprecated. See https://github.com/rails-autoscale/rails-autoscale-gems
70
- to integrate your Ruby app with the Judoscale Heroku add-on.
67
+ summary: This gem works with the Judoscale Heroku add-on to automatically scale your
68
+ web and worker dynos.
71
69
  test_files: []
@@ -1,32 +0,0 @@
1
- lib = File.expand_path("../lib", __FILE__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "judoscale/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "judoscale-ruby"
7
- spec.version = Judoscale::VERSION
8
- spec.authors = ["Adam McCrea", "Carlos Antonio da Silva"]
9
- spec.email = ["adam@adamlogic.com"]
10
-
11
- spec.summary = "This gem is deprecated. See https://github.com/rails-autoscale/rails-autoscale-gems to integrate your Ruby app with the Judoscale Heroku add-on."
12
- spec.homepage = "https://judoscale.com"
13
- spec.license = "MIT"
14
-
15
- spec.metadata = {
16
- "homepage_uri" => "https://judoscale.com",
17
- "bug_tracker_uri" => "https://github.com/judoscale/judoscale-ruby/issues",
18
- "documentation_uri" => "https://judoscale.com/docs",
19
- "changelog_uri" => "https://github.com/judoscale/judoscale-ruby/blob/main/CHANGELOG.md",
20
- "source_code_uri" => "https://github.com/judoscale/judoscale-ruby"
21
- }
22
-
23
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
24
- spec.require_paths = ["lib"]
25
-
26
- spec.required_ruby_version = ">= 2.6.0"
27
-
28
- spec.post_install_message = <<~EOS
29
- `judoscale-ruby` is deprecated! Please migrate to `rails-autoscale-core`.
30
- See https://github.com/rails-autoscale/rails-autoscale-gems for the installation guide.
31
- EOS
32
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Judoscale
4
- VERSION = "1.0.0.rc2"
5
- end