judoscale-ruby 1.0.0.rc1 → 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: 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