filesystem_queue 0.2.0 → 0.3.0

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: 2e960414c06a8d0a9fe7d7fc0b8b1ed90cf604d7648ab74c64f924648a137e94
4
- data.tar.gz: 06f0a8e59cbb4c64a2de4af00360b317bb13e8a136f3d1647ff802b8b7617939
3
+ metadata.gz: 7954b5b7e75219071fbf43cb6c92efa52477a933a2e2238e189ee67dc8cc87ae
4
+ data.tar.gz: 5b253de47b288f393474f5ed225429ec48132856e3f1f2b45c040b2dc506286e
5
5
  SHA512:
6
- metadata.gz: 6a9d6f4d5c55313ed7af2bc85245c019f97a66a691a4511c67ed78a53e74fa91f6574e513ebaf1e288aaeeb74cca74bbb53de289c294ff4ad781c496a9e4edf1
7
- data.tar.gz: a71491c4ac7e6f46b8834ef9ca7f1f7534216d6036c4e98877c2f0ae34a050202699fb471b9886a51f6fb61fa3359aa297980f4debc74e93db90108adbf8f756
6
+ metadata.gz: 4cfbee5995cbcb04f1f5757ee1415744ee2b236d95864c94930c43c50234cd6080d8554b3e06726dba95203292cef1760e65b40afbba1445c4479c1d09500fbc
7
+ data.tar.gz: 43dcdde986b435fdf1b3c06ee15f598a0b95406d62ecea8754e32b1c8a7d10fb243757df18c83cd0486bd909a408b0eb06a18ae35773138836d76cea697e9e0c
data/CHANGELOG.md CHANGED
@@ -1,11 +1,17 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.3.0] - 2024-09-20
4
+ - Added `reenqueue_failed_jobs` method to move failed jobs back to the queue
5
+ - Added `reenqueue_completed_jobs` method to move completed jobs back to the queue
6
+
3
7
  ## [0.2.0] - 2024-09-16
4
8
  - Replaced old index for an in-memory index for job tracking
5
9
  - Added `cleanup` method to delete files and directories created by the queue
10
+
6
11
  ## [0.1.1] - 2024-09-13
7
12
  - Added unit tests
8
13
  - Fixed Github Actions
9
14
  - Minor refactors
15
+
10
16
  ## [0.1.0] - 2024-09-12
11
17
  - Initial release
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- filesystem_queue (0.2.0)
4
+ filesystem_queue (0.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -74,6 +74,18 @@ Returns the number of jobs currently in the queue.
74
74
  - **Returns**:
75
75
  - `Integer`: The number of jobs in the queue.
76
76
 
77
+ ### `reenqueue_failed_jobs`
78
+
79
+ Moves all failed jobs back to the queue for reprocessing.
80
+
81
+ ### `reenqueue_completed_jobs`
82
+
83
+ Moves all completed jobs back to the queue for reprocessing.
84
+
85
+ ### `cleanup`
86
+
87
+ Removes all files and directories created by the queue.
88
+
77
89
  ## Usage
78
90
 
79
91
  ```ruby
@@ -120,6 +132,12 @@ puts 'Queue is empty'
120
132
  puts "Queue size: #{queue.size}"
121
133
  puts "Failed jobs: #{queue.failed_size}"
122
134
 
135
+ # Reenqueue all failed jobs back to the queue
136
+ queue.reenqueue_failed_jobs
137
+
138
+ # Reenqueue all completed jobs back to the queue
139
+ queue.reenqueue_completed_jobs
140
+
123
141
  # Cleanup all files and directories created by the queue
124
142
  queue.cleanup
125
143
  ```
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FilesystemQueue
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
@@ -56,6 +56,23 @@ module FilesystemQueue
56
56
  Dir[File.join(@failed_dir, '*')].count { |file| File.file?(file) }
57
57
  end
58
58
 
59
+ def retry_failed_jobs
60
+ failed_jobs = Dir.glob(File.join(@failed_dir, '*.json'))
61
+ failed_jobs.each do |job_file|
62
+ new_job_file = File.join(@jobs_dir, File.basename(job_file))
63
+ FileUtils.mv(job_file, new_job_file)
64
+ @index << new_job_file
65
+ end
66
+ end
67
+
68
+ def reenqueue_failed_jobs
69
+ reenqueue_jobs(@failed_dir)
70
+ end
71
+
72
+ def reenqueue_completed_jobs
73
+ reenqueue_jobs(@completed_dir)
74
+ end
75
+
59
76
  # CAUTION: Cleanup the queue directory, removing all files and directories
60
77
  def cleanup
61
78
  [@jobs_dir, @completed_dir, @failed_dir].each do |dir|
@@ -74,5 +91,14 @@ module FilesystemQueue
74
91
  FileUtils.mv(job_file, target_dir)
75
92
  @index.delete(job_file)
76
93
  end
94
+
95
+ def reenqueue_jobs(source_dir)
96
+ job_files = Dir.glob(File.join(source_dir, '*.json'))
97
+ job_files.each do |job_file|
98
+ new_job_file = File.join(@jobs_dir, File.basename(job_file))
99
+ FileUtils.mv(job_file, new_job_file)
100
+ @index << new_job_file
101
+ end
102
+ end
77
103
  end
78
104
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filesystem_queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Westman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-09-16 00:00:00.000000000 Z
11
+ date: 2024-09-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: FilesystemQueue is a Ruby gem that provides a persistent queue system
14
14
  using the local filesystem.It allows you to enqueue and dequeue jobs, and keeps