inst-jobs-statsd 3.0.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/lib/inst-jobs-statsd.rb +22 -20
  3. data/lib/inst_jobs_statsd/default_tracking.rb +3 -1
  4. data/lib/inst_jobs_statsd/ext/job.rb +2 -0
  5. data/lib/inst_jobs_statsd/jobs_tracker.rb +2 -0
  6. data/lib/inst_jobs_statsd/naming.rb +21 -14
  7. data/lib/inst_jobs_statsd/stats/counters/complete.rb +2 -0
  8. data/lib/inst_jobs_statsd/stats/counters/create.rb +2 -0
  9. data/lib/inst_jobs_statsd/stats/counters/run.rb +2 -0
  10. data/lib/inst_jobs_statsd/stats/counters.rb +2 -0
  11. data/lib/inst_jobs_statsd/stats/periodic/failed.rb +5 -2
  12. data/lib/inst_jobs_statsd/stats/periodic/queue.rb +11 -8
  13. data/lib/inst_jobs_statsd/stats/periodic/run.rb +11 -7
  14. data/lib/inst_jobs_statsd/stats/periodic.rb +20 -4
  15. data/lib/inst_jobs_statsd/stats/timing/failed.rb +2 -0
  16. data/lib/inst_jobs_statsd/stats/timing/perform.rb +2 -0
  17. data/lib/inst_jobs_statsd/stats/timing/pop.rb +2 -0
  18. data/lib/inst_jobs_statsd/stats/timing.rb +7 -3
  19. data/lib/inst_jobs_statsd/version.rb +3 -1
  20. metadata +76 -75
  21. data/spec/factories/jobs.rb +0 -9
  22. data/spec/factories/workers.rb +0 -9
  23. data/spec/gemfiles/60.gemfile +0 -7
  24. data/spec/inst_jobs_statsd/ext/job_spec.rb +0 -17
  25. data/spec/inst_jobs_statsd/jobs_tracker_spec.rb +0 -30
  26. data/spec/inst_jobs_statsd/naming_spec.rb +0 -56
  27. data/spec/inst_jobs_statsd/stats/counters/complete_spec.rb +0 -27
  28. data/spec/inst_jobs_statsd/stats/counters/create_spec.rb +0 -27
  29. data/spec/inst_jobs_statsd/stats/counters/run_spec.rb +0 -27
  30. data/spec/inst_jobs_statsd/stats/periodic/failed_spec.rb +0 -31
  31. data/spec/inst_jobs_statsd/stats/periodic/queue_spec.rb +0 -95
  32. data/spec/inst_jobs_statsd/stats/periodic/run_spec.rb +0 -53
  33. data/spec/inst_jobs_statsd/stats/periodic_spec.rb +0 -63
  34. data/spec/inst_jobs_statsd/stats/timing/failed_spec.rb +0 -25
  35. data/spec/inst_jobs_statsd/stats/timing/perform_spec.rb +0 -35
  36. data/spec/inst_jobs_statsd/stats/timing/pop_spec.rb +0 -34
  37. data/spec/inst_jobs_statsd/stats/timing_spec.rb +0 -35
  38. data/spec/inst_statsd/default_tracking_spec.rb +0 -16
  39. data/spec/matchers.rb +0 -3
  40. data/spec/setup_test_db.rb +0 -45
  41. data/spec/spec_helper.rb +0 -61
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: efc6027a4283d4fbe37e336710c974dfd2ddd1ab273613fbd9936fb0cfca37e5
4
- data.tar.gz: eef10d80500c432b596436e28422c5b1243c1ec48de44fd73ec1a208ccc58734
3
+ metadata.gz: c4a9d57f59dc527218751eb536cac69af6d5eb257d216d8b01cd5f00de7d10b8
4
+ data.tar.gz: 7398542a12623da8a74be2d1158d25f48bdb6b68433532608b10e2dbbec21c78
5
5
  SHA512:
6
- metadata.gz: c4c9cad4da6c5d3897239e390445c852230655cb47fc5d5ca97c045d8d6923e1b33a8a6b7f8c8a66dda12e2636a204b4df6b8b1ca3f5912ece8a8ec991e7470f
7
- data.tar.gz: f94e0bf3044911fbfc165f2320a2a08bbd744746e98771c3aded317e210ab2884294bf093b31ff386d2c7d0a22751d2dd48085b7e5785fe15a2191df2621cd65
6
+ metadata.gz: fd829e71ac4403783556005c4ab5cf2fb2eed80238f5f2e8785c6297a5b1330f7ecda868e88a69b92cd197c53ebfe8445b202e24f81bfd852b9db6105fd68956
7
+ data.tar.gz: cb5c46e89d724dab97743d5c3db895a3f8e8d3a5857d9a4af443ba91ee89a505879f7b3ec6e8f670fcaeb0b48957567c5487d4c9d6facf0ce9a22d5a6958f6c8
@@ -1,27 +1,29 @@
1
- require 'inst-jobs'
2
- require 'inst_statsd'
1
+ # frozen_string_literal: true
3
2
 
4
- require_relative 'inst_jobs_statsd/version'
3
+ require "inst-jobs"
4
+ require "inst_statsd"
5
5
 
6
- require_relative 'inst_jobs_statsd/default_tracking'
7
- require_relative 'inst_jobs_statsd/jobs_tracker'
6
+ require_relative "inst_jobs_statsd/version"
8
7
 
9
- require_relative 'inst_jobs_statsd/naming'
8
+ require_relative "inst_jobs_statsd/default_tracking"
9
+ require_relative "inst_jobs_statsd/jobs_tracker"
10
10
 
11
- require_relative 'inst_jobs_statsd/stats/counters'
12
- require_relative 'inst_jobs_statsd/stats/counters/create'
13
- require_relative 'inst_jobs_statsd/stats/counters/run'
14
- require_relative 'inst_jobs_statsd/stats/counters/complete'
11
+ require_relative "inst_jobs_statsd/naming"
15
12
 
16
- require_relative 'inst_jobs_statsd/stats/periodic'
17
- require_relative 'inst_jobs_statsd/stats/periodic/failed'
18
- require_relative 'inst_jobs_statsd/stats/periodic/queue'
19
- require_relative 'inst_jobs_statsd/stats/periodic/run'
13
+ require_relative "inst_jobs_statsd/stats/counters"
14
+ require_relative "inst_jobs_statsd/stats/counters/create"
15
+ require_relative "inst_jobs_statsd/stats/counters/run"
16
+ require_relative "inst_jobs_statsd/stats/counters/complete"
20
17
 
21
- require_relative 'inst_jobs_statsd/stats/timing'
22
- require_relative 'inst_jobs_statsd/stats/timing/failed'
23
- require_relative 'inst_jobs_statsd/stats/timing/perform'
24
- require_relative 'inst_jobs_statsd/stats/timing/pop'
25
- require_relative 'inst_jobs_statsd/ext/job'
18
+ require_relative "inst_jobs_statsd/stats/periodic"
19
+ require_relative "inst_jobs_statsd/stats/periodic/failed"
20
+ require_relative "inst_jobs_statsd/stats/periodic/queue"
21
+ require_relative "inst_jobs_statsd/stats/periodic/run"
26
22
 
27
- ::InstStatsd::DefaultTracking.include InstJobsStatsd::DefaultTracking
23
+ require_relative "inst_jobs_statsd/stats/timing"
24
+ require_relative "inst_jobs_statsd/stats/timing/failed"
25
+ require_relative "inst_jobs_statsd/stats/timing/perform"
26
+ require_relative "inst_jobs_statsd/stats/timing/pop"
27
+ require_relative "inst_jobs_statsd/ext/job"
28
+
29
+ InstStatsd::DefaultTracking.include InstJobsStatsd::DefaultTracking
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Defines InstStatsd::DefaultTracking.track_jobs
2
4
  # to be consistent with InstStatsd::DefaultTracking.track_sql etc
3
5
  module InstJobsStatsd
@@ -8,7 +10,7 @@ module InstJobsStatsd
8
10
 
9
11
  module ClassMethods
10
12
  def track_jobs(enable_periodic_queries: true)
11
- @jobs_tracker ||= JobsTracker.new(enable_periodic_queries: enable_periodic_queries)
13
+ @jobs_tracker ||= JobsTracker.new(enable_periodic_queries: enable_periodic_queries) # rubocop:disable Naming/MemoizedInstanceVariableName
12
14
  end
13
15
  end
14
16
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Ext
3
5
  module Job
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  class JobsTracker
3
5
  def self.track(enable_periodic_queries: true)
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Naming
3
- BASENAME = 'delayedjob'.freeze
5
+ BASENAME = "delayedjob"
4
6
 
5
7
  # The root prefix for all stat names
6
8
  # TODO: Make this configurable
@@ -32,12 +34,18 @@ module InstJobsStatsd
32
34
 
33
35
  def self.dd_job_tags(job)
34
36
  tags = dd_region_tags
35
- return tags unless job&.tag
36
- return tags if job.tag =~ /Class:0x/
37
+ return tags unless job
38
+
39
+ tags[:cluster] = job.current_shard&.database_server&.id if job.respond_to?(:current_shard)
40
+ tags[:priority] = job.priority
41
+ tags.compact!
42
+
43
+ return tags unless job.tag
44
+ return tags if job.tag.include?("Class:0x")
37
45
 
38
46
  method_tag, obj_tag = split_to_tag(job)
39
47
  tag = obj_tag
40
- tag = [obj_tag, method_tag].join('.') if method_tag.present?
48
+ tag = [obj_tag, method_tag].join(".") if method_tag.present?
41
49
  tags[:tag] = tag
42
50
  tags
43
51
  end
@@ -47,7 +55,7 @@ module InstJobsStatsd
47
55
  def self.job_tags(job)
48
56
  return unless job
49
57
  return unless job.tag
50
- return if job.tag =~ /Class:0x/
58
+ return if job.tag.include?("Class:0x")
51
59
 
52
60
  method_tag, obj_tag = split_to_tag(job)
53
61
  tags = [obj_tag]
@@ -58,26 +66,25 @@ module InstJobsStatsd
58
66
  # We are using all existing stat names here because we do not want
59
67
  # to break existing dependencies on the non-regioned data
60
68
  def self.region_tags(stat_names)
61
- return unless ENV['INST_JOBS_STATSD_NAMESPACE']
69
+ return unless ENV["INST_JOBS_STATSD_NAMESPACE"]
62
70
 
63
71
  stat_names.map do |name|
64
72
  name
65
- .split('.')
66
- .insert(2, ENV['INST_JOBS_STATSD_NAMESPACE'])
67
- .join('.')
73
+ .split(".")
74
+ .insert(2, ENV["INST_JOBS_STATSD_NAMESPACE"])
75
+ .join(".")
68
76
  end
69
77
  end
70
78
 
71
79
  def self.dd_region_tags
72
- return {} unless ENV['INST_JOBS_STATSD_NAMESPACE']
73
- { namespace: ENV['INST_JOBS_STATSD_NAMESPACE'] }
74
- end
80
+ return {} unless ENV["INST_JOBS_STATSD_NAMESPACE"]
75
81
 
76
- private
82
+ { namespace: ENV["INST_JOBS_STATSD_NAMESPACE"] }
83
+ end
77
84
 
78
85
  def self.split_to_tag(job)
79
86
  obj_tag, method_tag = job.tag.split(/[\.#]/, 2).map do |v|
80
- InstStatsd::Statsd.escape(v).gsub('::', '-')
87
+ InstStatsd::Statsd.escape(v).gsub("::", "-")
81
88
  end
82
89
  [method_tag, obj_tag]
83
90
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Stats
3
5
  module Counters
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Stats
3
5
  module Counters
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Stats
3
5
  module Counters
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Stats
3
5
  module Counters
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Stats
3
5
  module Periodic
@@ -12,8 +14,9 @@ module InstJobsStatsd
12
14
  end
13
15
 
14
16
  def self.report_failed_depth
15
- count = Delayed::Job::Failed.count
16
- Periodic.report_gauge(:failed_depth, count)
17
+ count_by_queue = Delayed::Job::Failed.group(:queue).count
18
+
19
+ Periodic.report_gauge_by_queue(:failed_depth, count_by_queue)
17
20
  end
18
21
  end
19
22
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Stats
3
5
  module Periodic
@@ -18,10 +20,7 @@ module InstJobsStatsd
18
20
  end
19
21
 
20
22
  def self.report_queue_depth
21
- # count = Delayed::Job.jobs_count(:current) <-- includes running / locked
22
- scope = queued_jobs_scope
23
- count = scope.count
24
- Periodic.report_gauge(:queue_depth, count)
23
+ Periodic.report_gauge_by_queue(:queue_depth, queued_jobs_scope.count)
25
24
  end
26
25
 
27
26
  # Limit the jobs included in this gauge to prevent blowing up
@@ -32,16 +31,20 @@ module InstJobsStatsd
32
31
  # the count is capped, the metric will continue to grow
33
32
  # if the queue is actually stalled
34
33
  def self.report_queue_age
35
- jobs_run_at = queued_jobs_scope.limit(10_000).pluck(:run_at)
36
- age_secs = jobs_run_at.map { |t| Delayed::Job.db_time_now - t }
37
- Periodic.report_gauge(:queue_age_total, age_secs.sum)
38
- Periodic.report_gauge(:queue_age_max, age_secs.max)
34
+ jobs_run_at_by_queue = queued_jobs_scope.limit(10_000).pluck(:queue, "ARRAY_AGG(run_at)").to_h
35
+ age_secs_by_queue = jobs_run_at_by_queue.transform_values { |v| v.map { |t| Delayed::Job.db_time_now - t } }
36
+ age_max_by_queue = age_secs_by_queue.transform_values(&:max)
37
+ age_total_by_queue = age_secs_by_queue.transform_values(&:sum)
38
+
39
+ Periodic.report_gauge_by_queue(:queue_age_total, age_total_by_queue)
40
+ Periodic.report_gauge_by_queue(:queue_age_max, age_max_by_queue)
39
41
  end
40
42
 
41
43
  def self.queued_jobs_scope
42
44
  Delayed::Job
43
45
  .current
44
46
  .where("locked_at IS NULL OR locked_by = 'on_hold'") # not running
47
+ .group(:queue)
45
48
  end
46
49
  end
47
50
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Stats
3
5
  module Periodic
@@ -18,19 +20,21 @@ module InstJobsStatsd
18
20
  end
19
21
 
20
22
  def self.report_run_depth
21
- scope = running_jobs_scope
22
- Periodic.report_gauge(:run_depth, scope.count)
23
+ Periodic.report_gauge_by_queue(:run_depth, running_jobs_scope.count)
23
24
  end
24
25
 
25
26
  def self.report_run_age
26
- jobs_run_at = running_jobs_scope.limit(10_000).pluck(:run_at)
27
- age_secs = jobs_run_at.map { |t| Delayed::Job.db_time_now - t }
28
- Periodic.report_gauge(:run_age_total, age_secs.sum)
29
- Periodic.report_gauge(:run_age_max, age_secs.max)
27
+ jobs_run_at_by_queue = running_jobs_scope.limit(10_000).pluck(:queue, "ARRAY_AGG(run_at)").to_h
28
+ age_secs_by_queue = jobs_run_at_by_queue.transform_values { |v| v.map { |t| Delayed::Job.db_time_now - t } }
29
+ age_max_by_queue = age_secs_by_queue.transform_values(&:max)
30
+ age_total_by_queue = age_secs_by_queue.transform_values(&:sum)
31
+
32
+ Periodic.report_gauge_by_queue(:run_age_total, age_total_by_queue)
33
+ Periodic.report_gauge_by_queue(:run_age_max, age_max_by_queue)
30
34
  end
31
35
 
32
36
  def self.running_jobs_scope
33
- Delayed::Job.running
37
+ Delayed::Job.running.group(:queue)
34
38
  end
35
39
  end
36
40
  end
@@ -1,18 +1,33 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Stats
3
5
  module Periodic
4
6
  def self.enable_callbacks
5
- @instance ||= Callbacks.new
7
+ @instance ||= Callbacks.new # rubocop:disable Naming/MemoizedInstanceVariableName
6
8
  end
7
9
 
8
10
  def self.add(proc)
9
11
  return unless @instance
12
+
10
13
  @instance.add(proc)
11
14
  end
12
15
 
13
- def self.report_gauge(stat, value, job: nil, sample_rate: 1)
16
+ def self.report_gauge(stat, value, job: nil, sample_rate: 1, additional_tags: {})
14
17
  stats = Naming.qualified_names(stat, job)
15
- InstStatsd::Statsd.gauge(stats, value, sample_rate, short_stat: stat, tags: Naming.dd_job_tags(job))
18
+ InstStatsd::Statsd.gauge(stats,
19
+ value,
20
+ sample_rate,
21
+ short_stat: stat,
22
+ tags: Naming.dd_job_tags(job).merge(additional_tags))
23
+ end
24
+
25
+ def self.report_gauge_by_queue(stat, value_by_queue)
26
+ value_by_queue.each do |queue, count|
27
+ report_gauge(stat, count, additional_tags: { queue: queue })
28
+ end
29
+
30
+ report_gauge("#{stat}.total", value_by_queue.values.sum)
16
31
  end
17
32
 
18
33
  class Callbacks
@@ -72,6 +87,7 @@ module InstJobsStatsd
72
87
  # When the required interval of time has passed, execute the given block
73
88
  def tick
74
89
  return unless Delayed::Job.db_time_now >= @next_run
90
+
75
91
  update_next_run
76
92
  yield
77
93
  end
@@ -83,7 +99,7 @@ module InstJobsStatsd
83
99
  # from the target interval as much as possible
84
100
  def update_next_run
85
101
  ticks = ((Delayed::Job.db_time_now - @start_time) / @min_interval).floor
86
- @next_run = @start_time + (ticks + 1) * @min_interval
102
+ @next_run = @start_time + ((ticks + 1) * @min_interval)
87
103
  end
88
104
  end
89
105
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Stats
3
5
  module Timing
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Stats
3
5
  module Timing
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Stats
3
5
  module Timing
@@ -1,11 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
4
  module Stats
3
5
  module Timing
4
- def self.report_timing(stat, job: nil, timing: nil, sample_rate: 1)
6
+ def self.report_timing(stat, job: nil, timing: nil, sample_rate: 1, &block)
5
7
  stats = Naming.qualified_names(stat, job)
6
8
 
7
- if block_given?
8
- InstStatsd::Statsd.time(stats, sample_rate, short_stat: stat, tags: Naming.dd_job_tags(job)) { yield }
9
+ if block
10
+ InstStatsd::Statsd.time(stats, sample_rate, short_stat: stat, tags: Naming.dd_job_tags(job), &block)
9
11
  else
10
12
  InstStatsd::Statsd.timing(stats, timing, sample_rate, short_stat: stat, tags: Naming.dd_job_tags(job))
11
13
  end
@@ -13,12 +15,14 @@ module InstJobsStatsd
13
15
 
14
16
  def self.report_job_timing_queued(job)
15
17
  return unless job
18
+
16
19
  time_in_queue = ((Delayed::Job.db_time_now - job.run_at) * 1000).round
17
20
  report_timing(:queue, job: job, timing: time_in_queue)
18
21
  end
19
22
 
20
23
  def self.report_job_timing_failed(job)
21
24
  return unless job
25
+
22
26
  time_to_failure = ((Delayed::Job.db_time_now - job.run_at) * 1000).round
23
27
  report_timing(:failed_after, job: job, timing: time_to_failure)
24
28
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module InstJobsStatsd
2
- VERSION = '3.0.0'.freeze
4
+ VERSION = "4.0.0"
3
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inst-jobs-statsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Slade
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-14 00:00:00.000000000 Z
11
+ date: 2024-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inst-jobs
@@ -45,7 +45,7 @@ dependencies:
45
45
  - !ruby/object:Gem::Version
46
46
  version: '3.0'
47
47
  - !ruby/object:Gem::Dependency
48
- name: bump
48
+ name: bundler
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="
@@ -59,21 +59,21 @@ dependencies:
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  - !ruby/object:Gem::Dependency
62
- name: bundler
62
+ name: database_cleaner
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - ">="
65
+ - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0'
67
+ version: '2.0'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ">="
72
+ - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0'
74
+ version: '2.0'
75
75
  - !ruby/object:Gem::Dependency
76
- name: byebug
76
+ name: debug
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - ">="
@@ -87,21 +87,7 @@ dependencies:
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
- name: database_cleaner
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '1.7'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '1.7'
103
- - !ruby/object:Gem::Dependency
104
- name: factory_girl
90
+ name: factory_bot
105
91
  requirement: !ruby/object:Gem::Requirement
106
92
  requirements:
107
93
  - - ">="
@@ -171,19 +157,75 @@ dependencies:
171
157
  - !ruby/object:Gem::Version
172
158
  version: '3.9'
173
159
  - !ruby/object:Gem::Dependency
174
- name: rubocop
160
+ name: rubocop-factory_bot
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '2.24'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '2.24'
173
+ - !ruby/object:Gem::Dependency
174
+ name: rubocop-inst
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '1.0'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '1.0'
187
+ - !ruby/object:Gem::Dependency
188
+ name: rubocop-rails
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '2.21'
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: '2.21'
201
+ - !ruby/object:Gem::Dependency
202
+ name: rubocop-rake
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '0.6'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '0.6'
215
+ - !ruby/object:Gem::Dependency
216
+ name: rubocop-rspec
175
217
  requirement: !ruby/object:Gem::Requirement
176
218
  requirements:
177
219
  - - "~>"
178
220
  - !ruby/object:Gem::Version
179
- version: 0.48.0
221
+ version: '2.24'
180
222
  type: :development
181
223
  prerelease: false
182
224
  version_requirements: !ruby/object:Gem::Requirement
183
225
  requirements:
184
226
  - - "~>"
185
227
  - !ruby/object:Gem::Version
186
- version: 0.48.0
228
+ version: '2.24'
187
229
  - !ruby/object:Gem::Dependency
188
230
  name: simplecov
189
231
  requirement: !ruby/object:Gem::Requirement
@@ -226,7 +268,7 @@ dependencies:
226
268
  - - "~>"
227
269
  - !ruby/object:Gem::Version
228
270
  version: 1.4.0
229
- description:
271
+ description:
230
272
  email:
231
273
  - jslade@instructure.com
232
274
  executables: []
@@ -251,32 +293,12 @@ files:
251
293
  - lib/inst_jobs_statsd/stats/timing/perform.rb
252
294
  - lib/inst_jobs_statsd/stats/timing/pop.rb
253
295
  - lib/inst_jobs_statsd/version.rb
254
- - spec/factories/jobs.rb
255
- - spec/factories/workers.rb
256
- - spec/gemfiles/60.gemfile
257
- - spec/inst_jobs_statsd/ext/job_spec.rb
258
- - spec/inst_jobs_statsd/jobs_tracker_spec.rb
259
- - spec/inst_jobs_statsd/naming_spec.rb
260
- - spec/inst_jobs_statsd/stats/counters/complete_spec.rb
261
- - spec/inst_jobs_statsd/stats/counters/create_spec.rb
262
- - spec/inst_jobs_statsd/stats/counters/run_spec.rb
263
- - spec/inst_jobs_statsd/stats/periodic/failed_spec.rb
264
- - spec/inst_jobs_statsd/stats/periodic/queue_spec.rb
265
- - spec/inst_jobs_statsd/stats/periodic/run_spec.rb
266
- - spec/inst_jobs_statsd/stats/periodic_spec.rb
267
- - spec/inst_jobs_statsd/stats/timing/failed_spec.rb
268
- - spec/inst_jobs_statsd/stats/timing/perform_spec.rb
269
- - spec/inst_jobs_statsd/stats/timing/pop_spec.rb
270
- - spec/inst_jobs_statsd/stats/timing_spec.rb
271
- - spec/inst_statsd/default_tracking_spec.rb
272
- - spec/matchers.rb
273
- - spec/setup_test_db.rb
274
- - spec/spec_helper.rb
275
296
  homepage: https://github.com/instructure/inst-jobs-statsd
276
297
  licenses:
277
298
  - MIT
278
- metadata: {}
279
- post_install_message:
299
+ metadata:
300
+ rubygems_mfa_required: 'true'
301
+ post_install_message:
280
302
  rdoc_options: []
281
303
  require_paths:
282
304
  - lib
@@ -292,28 +314,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
292
314
  version: '0'
293
315
  requirements: []
294
316
  rubygems_version: 3.1.6
295
- signing_key:
317
+ signing_key:
296
318
  specification_version: 4
297
319
  summary: Stats reporting for inst-jobs
298
- test_files:
299
- - spec/inst_jobs_statsd/ext/job_spec.rb
300
- - spec/inst_jobs_statsd/naming_spec.rb
301
- - spec/inst_jobs_statsd/stats/periodic/failed_spec.rb
302
- - spec/inst_jobs_statsd/stats/periodic/run_spec.rb
303
- - spec/inst_jobs_statsd/stats/periodic/queue_spec.rb
304
- - spec/inst_jobs_statsd/stats/timing/failed_spec.rb
305
- - spec/inst_jobs_statsd/stats/timing/pop_spec.rb
306
- - spec/inst_jobs_statsd/stats/timing/perform_spec.rb
307
- - spec/inst_jobs_statsd/stats/periodic_spec.rb
308
- - spec/inst_jobs_statsd/stats/counters/run_spec.rb
309
- - spec/inst_jobs_statsd/stats/counters/create_spec.rb
310
- - spec/inst_jobs_statsd/stats/counters/complete_spec.rb
311
- - spec/inst_jobs_statsd/stats/timing_spec.rb
312
- - spec/inst_jobs_statsd/jobs_tracker_spec.rb
313
- - spec/spec_helper.rb
314
- - spec/setup_test_db.rb
315
- - spec/matchers.rb
316
- - spec/gemfiles/60.gemfile
317
- - spec/factories/workers.rb
318
- - spec/factories/jobs.rb
319
- - spec/inst_statsd/default_tracking_spec.rb
320
+ test_files: []
@@ -1,9 +0,0 @@
1
- FactoryGirl.define do
2
- class JobFixture
3
- attr_accessor :tag, :run_at
4
- end
5
-
6
- factory :job_fixture, aliases: [:job] do
7
- tag 'Test::Job.perform'
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- FactoryGirl.define do
2
- class WorkerFixture
3
- attr_accessor :name
4
- end
5
-
6
- factory :worker_fixture, aliases: [:worker] do
7
- sequence(:name) { |n| "worker-#{n}" }
8
- end
9
- end
@@ -1,7 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec :path=>"../../"
4
-
5
- gem "rails", "~> 6.0"
6
- gem "sinatra", "~> 2.0.8"
7
- gem "sinatra-contrib", "~> 2.0.8"