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 +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +1 -1
- data/README.md +18 -0
- data/lib/filesystem_queue/version.rb +1 -1
- data/lib/filesystem_queue.rb +26 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7954b5b7e75219071fbf43cb6c92efa52477a933a2e2238e189ee67dc8cc87ae
|
4
|
+
data.tar.gz: 5b253de47b288f393474f5ed225429ec48132856e3f1f2b45c040b2dc506286e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
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
|
```
|
data/lib/filesystem_queue.rb
CHANGED
@@ -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.
|
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-
|
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
|