good_job 2.0.2 → 2.0.3

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: 11a59540e5e10acc24b9010cb14dc8cbce2f43e8c2f1fe886b6fcf0895a978f2
4
- data.tar.gz: 6fea5677587740d390f6eaa3dc903cee7c26a8576f14dd91f85f8886637d634b
3
+ metadata.gz: d4c1686f53ec7019417a342069c499c829dccb4f8cfcbd7396623b96e9edd2fe
4
+ data.tar.gz: de4e3d7a20e47c63aad25dd167a640b83a9349f0b8933d4692afc6f8b12d16d3
5
5
  SHA512:
6
- metadata.gz: '087af5fa1eaf81eff5078b5e3303e202aa73ea022d7018d60f01c6abb5a808a9442278e87490f846475c626bb5b5dd320537d68c16697ca54e9f30147f5b9225'
7
- data.tar.gz: d19960b918937484e0f37eb0456fc3352dc2f4394fab4b0477bde7dedab789f2ce63c48b4971e38d2ff3a5d8725f1761afd425426ad384766f34cf549c35009e
6
+ metadata.gz: dfe017b7ea652b134c009622e5a7b1d83e7d502a4f066b49538ffca138555f4395d6279f7256a10c872e1967aa127bb82eba17a72fbf8930adcd12da9650dbf4
7
+ data.tar.gz: 1e5178b1d9ddf492347e6f25b10bae710dc25454974436fad322b306698a25bdf29d777f54de5c988479b56a21d2b0a8cfdc7b7f87799ae5cf6f7df4c76f4b6b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [v2.0.3](https://github.com/bensheldon/good_job/tree/v2.0.3) (2021-08-31)
4
+
5
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.0.2...v2.0.3)
6
+
7
+ **Closed issues:**
8
+
9
+ - Expose CLI `cleanup_preserved_jobs` functionality via `GoodJob`? [\#351](https://github.com/bensheldon/good_job/issues/351)
10
+
11
+ **Merged pull requests:**
12
+
13
+ - Implement `GoodJob.cleanup_preserved_jobs`, fixes \#351 [\#356](https://github.com/bensheldon/good_job/pull/356) ([aried3r](https://github.com/aried3r))
14
+
3
15
  ## [v2.0.2](https://github.com/bensheldon/good_job/tree/v2.0.2) (2021-08-27)
4
16
 
5
17
  [Full Changelog](https://github.com/bensheldon/good_job/compare/v1.99.1...v2.0.2)
data/README.md CHANGED
@@ -184,7 +184,7 @@ separate isolated execution pools with semicolons and threads with colons.
184
184
 
185
185
  #### `good_job cleanup_preserved_jobs`
186
186
 
187
- `good_job cleanup_preserved_jobs` deletes preserved job records. See [`GoodJob.preserve_job_records` for when this command is useful.
187
+ `good_job cleanup_preserved_jobs` deletes preserved job records. See `GoodJob.preserve_job_records` for when this command is useful.
188
188
 
189
189
  ```bash
190
190
  $ bundle exec good_job help cleanup_preserved_jobs
@@ -724,7 +724,8 @@ It is also necessary to delete these preserved jobs from the database after a ce
724
724
  - For example, in a Rake task:
725
725
 
726
726
  ```ruby
727
- GoodJob::Job.finished(1.day.ago).delete_all
727
+ GoodJob.cleanup_preserved_jobs # Will keep 1 day of job records by default.
728
+ GoodJob.cleanup_preserved_jobs(older_than: 7.days) # It also takes custom arguments.
728
729
  ```
729
730
 
730
731
  - For example, using the `good_job` command-line utility:
data/lib/good_job/cli.rb CHANGED
@@ -134,16 +134,7 @@ module GoodJob
134
134
 
135
135
  configuration = GoodJob::Configuration.new(options)
136
136
 
137
- timestamp = Time.current - configuration.cleanup_preserved_jobs_before_seconds_ago
138
-
139
- ActiveSupport::Notifications.instrument(
140
- "cleanup_preserved_jobs.good_job",
141
- { before_seconds_ago: configuration.cleanup_preserved_jobs_before_seconds_ago, timestamp: timestamp }
142
- ) do |payload|
143
- deleted_records_count = GoodJob::Job.finished(timestamp).delete_all
144
-
145
- payload[:deleted_records_count] = deleted_records_count
146
- end
137
+ GoodJob.cleanup_preserved_jobs(older_than: configuration.cleanup_preserved_jobs_before_seconds_ago)
147
138
  end
148
139
 
149
140
  no_commands do
@@ -16,7 +16,7 @@ module GoodJob
16
16
  DEFAULT_DEVELOPMENT_ASYNC_POLL_INTERVAL = -1
17
17
  # Default number of threads to use per {Scheduler}
18
18
  DEFAULT_MAX_CACHE = 10000
19
- # Default number of seconds to preserve jobs for {CLI#cleanup_preserved_jobs}
19
+ # Default number of seconds to preserve jobs for {CLI#cleanup_preserved_jobs} and {GoodJob.cleanup_preserved_jobs}
20
20
  DEFAULT_CLEANUP_PRESERVED_JOBS_BEFORE_SECONDS_AGO = 24 * 60 * 60
21
21
  # Default to always wait for jobs to finish for {Adapter#shutdown}
22
22
  DEFAULT_SHUTDOWN_TIMEOUT = -1
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  module GoodJob
3
3
  # GoodJob gem version.
4
- VERSION = '2.0.2'
4
+ VERSION = '2.0.3'
5
5
  end
data/lib/good_job.rb CHANGED
@@ -42,7 +42,8 @@ module GoodJob
42
42
  # By default, GoodJob deletes job records after the job is completed successfully.
43
43
  # If you want to preserve jobs for latter inspection, set this to +true+.
44
44
  # If you want to preserve only jobs that finished with error for latter inspection, set this to +:on_unhandled_error+.
45
- # If +true+, you will need to clean out jobs using the +good_job cleanup_preserved_jobs+ CLI command.
45
+ # If +true+, you will need to clean out jobs using the +good_job cleanup_preserved_jobs+ CLI command or
46
+ # by using +Goodjob.cleanup_preserved_jobs+.
46
47
  # @return [Boolean, nil]
47
48
  mattr_accessor :preserve_job_records, default: false
48
49
 
@@ -114,6 +115,26 @@ module GoodJob
114
115
  end
115
116
  end
116
117
 
118
+ # Deletes preserved job records.
119
+ # By default, GoodJob deletes job records when the job is performed and this
120
+ # method is not necessary. However, when `GoodJob.preserve_job_records = true`,
121
+ # the jobs will be preserved in the database. This is useful when wanting to
122
+ # analyze or inspect job performance.
123
+ # If you are preserving job records this way, use this method regularly to
124
+ # delete old records and preserve space in your database.
125
+ # @params older_than [nil,Numeric,ActiveSupport::Duration] Jobs olders than this will be deleted (default: +86400+).
126
+ # @return [Integer] Number of jobs that were deleted.
127
+ def self.cleanup_preserved_jobs(older_than: nil)
128
+ older_than ||= GoodJob::Configuration.new({}).cleanup_preserved_jobs_before_seconds_ago
129
+ timestamp = Time.current - older_than
130
+
131
+ ActiveSupport::Notifications.instrument("cleanup_preserved_jobs.good_job", { older_than: older_than, timestamp: timestamp }) do |payload|
132
+ deleted_records_count = GoodJob::Job.finished(timestamp).delete_all
133
+
134
+ payload[:deleted_records_count] = deleted_records_count
135
+ end
136
+ end
137
+
117
138
  def self._executables
118
139
  [].concat(
119
140
  CronManager.instances,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: good_job
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Sheldon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-27 00:00:00.000000000 Z
11
+ date: 2021-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob