judoscale-ruby 1.0.0.rc1 → 1.1.1

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: 26e9809db642f08b7291edeae004fb8619f04bbff3130dc6f34043be85a768df
4
- data.tar.gz: a2ff6a031395e860a238db874212d4d82e106b8bdb91c2b3d948bb94a7c7a312
3
+ metadata.gz: 06d6051251ff5f628677d931e240a35ce4f93ec8409d3e9ba8e539ec300a96d6
4
+ data.tar.gz: ce94920cc35eff9f6cf328df39c84e2f0a25bd681422ab8111434311ba33cbc4
5
5
  SHA512:
6
- metadata.gz: 66423294a4021d1da21f77823d1ede3fbf4204da0ec61c9e90c33fbda2e34a21b77a7d06fcf95e711912ad38ed8d17875c74a8f5b98caefcaaac82b8d26a93e1
7
- data.tar.gz: 948b94b9b8000c7af821a0bf3cbfe1f28317ca70a052b11d46b512b01a718d7e7816fc7e2ec4a7f2a545645401585d2baba6a8927f39448c6d11321c376800ae
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.rc1)
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
@@ -26,12 +26,15 @@ module Judoscale
26
26
  end
27
27
  end
28
28
 
29
- def self.add_adapter(identifier, adapter_info, metrics_collector: nil)
29
+ def self.add_adapter(identifier, adapter_info, metrics_collector: nil, expose_config: nil)
30
+ Config.expose_adapter_config(expose_config) if expose_config
30
31
  @adapters << Adapter.new(identifier, adapter_info, metrics_collector)
31
32
  end
32
33
 
33
- add_adapter :"judoscale-ruby", {
34
+ add_adapter :"rails-autoscale-core", {
34
35
  adapter_version: VERSION,
35
36
  language_version: RUBY_VERSION
36
37
  }
37
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
 
@@ -16,7 +16,7 @@ module Judoscale
16
16
  end
17
17
 
18
18
  def report_metrics(report_json)
19
- post_json "/v1/metrics", report_json
19
+ post_json "/v3/reports", report_json
20
20
  end
21
21
 
22
22
  private
@@ -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
@@ -22,39 +22,51 @@ module Judoscale
22
22
  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}/
23
23
  DEFAULT_QUEUE_FILTER = ->(queue_name) { !UUID_REGEXP.match?(queue_name) }
24
24
 
25
- attr_accessor :enabled, :max_queues, :queues, :queue_filter, :track_busy_jobs
25
+ attr_accessor :identifier, :enabled, :max_queues, :queues, :queue_filter, :track_busy_jobs
26
26
 
27
- def initialize
27
+ def initialize(identifier)
28
+ @identifier = identifier
29
+ reset
30
+ end
31
+
32
+ def reset
28
33
  @enabled = true
29
- @max_queues = 20
30
34
  @queues = []
31
35
  @queue_filter = DEFAULT_QUEUE_FILTER
32
- @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"
33
40
  end
34
41
 
35
42
  def as_json
36
43
  {
37
- max_queues: max_queues,
38
- queues: queues,
39
- queue_filter: queue_filter != DEFAULT_QUEUE_FILTER,
40
- track_busy_jobs: track_busy_jobs
44
+ identifier => {
45
+ max_queues: max_queues,
46
+ queues: queues,
47
+ queue_filter: queue_filter != DEFAULT_QUEUE_FILTER,
48
+ track_busy_jobs: track_busy_jobs
49
+ }
41
50
  }
42
51
  end
43
52
  end
44
53
 
45
54
  include Singleton
46
55
 
47
- @adapter_configs = {}
56
+ @adapter_configs = []
48
57
  class << self
49
58
  attr_reader :adapter_configs
50
59
  end
51
60
 
52
- def self.add_adapter_config(identifier, config_class)
53
- @adapter_configs[identifier] = config_class
54
- attr_reader identifier
61
+ def self.expose_adapter_config(config_instance)
62
+ adapter_configs << config_instance
63
+
64
+ define_method(config_instance.identifier) do
65
+ config_instance
66
+ end
55
67
  end
56
68
 
57
- 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
58
70
  attr_reader :dyno, :log_level
59
71
 
60
72
  def initialize
@@ -63,16 +75,15 @@ module Judoscale
63
75
 
64
76
  def reset
65
77
  # Allow the API URL to be configured - needed for testing.
66
- @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"
67
80
  self.dyno = ENV["DYNO"]
68
81
  @max_request_size_bytes = 100_000 # ignore request payloads over 100k since they skew the queue times
69
82
  @report_interval_seconds = 10
70
- self.log_level = ENV["JUDOSCALE_LOG_LEVEL"]
83
+ self.log_level = ENV["RAILS_AUTOSCALE_LOG_LEVEL"] || ENV["JUDOSCALE_LOG_LEVEL"]
71
84
  @logger = ::Logger.new($stdout)
72
85
 
73
- self.class.adapter_configs.each do |identifier, config_class|
74
- instance_variable_set(:"@#{identifier}", config_class.new)
75
- end
86
+ self.class.adapter_configs.each(&:reset)
76
87
  end
77
88
 
78
89
  def dyno=(dyno_string)
@@ -84,9 +95,7 @@ module Judoscale
84
95
  end
85
96
 
86
97
  def as_json
87
- adapter_configs_json = self.class.adapter_configs.each_key.with_object({}) do |identifier, hash|
88
- hash[identifier] = public_send(identifier).as_json
89
- end
98
+ adapter_configs_json = self.class.adapter_configs.reduce({}) { |hash, config| hash.merge!(config.as_json) }
90
99
 
91
100
  {
92
101
  log_level: log_level,
@@ -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)
@@ -18,11 +18,11 @@ module Judoscale
18
18
  end
19
19
 
20
20
  def self.adapter_identifier
21
- raise "Implement `self.adapter_identifier` in individual job metrics collectors."
21
+ adapter_config.identifier
22
22
  end
23
23
 
24
24
  def self.adapter_config
25
- Config.instance.public_send(adapter_identifier)
25
+ raise "Implement `self.adapter_config` in individual job metrics collectors."
26
26
  end
27
27
 
28
28
  def initialize
@@ -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
 
@@ -15,9 +15,7 @@ module Judoscale
15
15
  dyno: config.dyno,
16
16
  pid: Process.pid,
17
17
  config: config.as_json,
18
- adapters: adapters.each_with_object({}) { |adapter, hash|
19
- hash.merge!(adapter.as_json)
20
- },
18
+ adapters: adapters.reduce({}) { |hash, adapter| hash.merge!(adapter.as_json) },
21
19
  metrics: metrics.map { |metric|
22
20
  [
23
21
  metric.time.to_i,
@@ -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.rc1
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-04-12 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,29 +21,29 @@ 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
49
  post_install_message:
@@ -57,9 +57,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
57
57
  version: 2.6.0
58
58
  required_rubygems_version: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">"
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 1.3.1
62
+ version: '0'
63
63
  requirements: []
64
64
  rubygems_version: 3.2.32
65
65
  signing_key:
@@ -1,27 +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 works with the Judoscale Heroku add-on to automatically scale your web and worker dynos."
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
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Judoscale
4
- VERSION = "1.0.0.rc1"
5
- end