progress_job 0.0.3 → 0.0.4
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/README.md +114 -27
- data/lib/progress_job/base.rb +6 -3
- data/lib/progress_job/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95e2d424d4fd78ff6b26586fd61e50dd7059f3c3
|
4
|
+
data.tar.gz: c3584f41f002dbc03af02c789f4df633a153b773
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f030db9cf0f21d62e9ff37a38d660db4c6a63e2320efc6e4204ef4951917782538681dd8c39b71fffcb6ec336bea57e7eb4660111680350cc15e37c72fab6c7
|
7
|
+
data.tar.gz: f39df1dea7ee77e722674f748af57f6ad94c8ca02dfb72eaec886f9c84fb4a1dc18aa296012171581437c0e1e4702953ecbbf52988bf87bedccb95969bb4ec59
|
data/README.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
This gem add a couple of colums to delayed job table, and gives u a basic class for working with progress
|
4
4
|
|
5
|
+

|
6
|
+
|
5
7
|
## Installation
|
6
8
|
|
7
9
|
You need to have https://github.com/collectiveidea/delayed_job in you gem file
|
@@ -16,7 +18,7 @@ And then execute:
|
|
16
18
|
|
17
19
|
Run generator (run delayed job generators first!)
|
18
20
|
|
19
|
-
$
|
21
|
+
$ rails generate progress_job:install
|
20
22
|
|
21
23
|
## Usage
|
22
24
|
|
@@ -25,50 +27,135 @@ Create a new class that extends ProgressJob::Base
|
|
25
27
|
class NewJob < ProgressJob::Base
|
26
28
|
|
27
29
|
def perform
|
28
|
-
|
29
|
-
sleep(1.seconds)
|
30
|
-
update_progress(step: 10)
|
31
|
-
end
|
30
|
+
# some actions
|
32
31
|
end
|
33
32
|
|
34
33
|
end
|
35
34
|
|
36
|
-
Inside perform method you can use
|
35
|
+
Inside perform method you can use:
|
36
|
+
|
37
|
+
update_progress(step: 10) # default step is 1
|
38
|
+
update_stage('name of stage')
|
39
|
+
update_stage_progress('name of stage', step: 11)
|
40
|
+
update_progress_max(progress_max)
|
41
|
+
|
42
|
+
methods to update the job progress.
|
43
|
+
|
37
44
|
|
38
45
|
To create a new job use Delayed job enqueue method, and pass the progress_max value
|
39
46
|
|
40
|
-
job = Delayed::Job.enqueue NewJob.new(100)
|
47
|
+
job = Delayed::Job.enqueue NewJob.new(progress_max: 100) # default progress_max is 100
|
41
48
|
|
42
49
|
There is also a controller which returns the delayed job with calculated percentage
|
43
50
|
|
44
51
|
GET 'progress-jobs/:job_id/'
|
45
52
|
|
46
|
-
##
|
53
|
+
## Examples
|
54
|
+
|
55
|
+
### Progress job class
|
56
|
+
|
57
|
+
class NewJob < ProgressJob::Base
|
58
|
+
|
59
|
+
def perform
|
60
|
+
handler = Handler.new
|
61
|
+
|
62
|
+
update_stage('Handling ports')
|
63
|
+
handler.handle_ports
|
47
64
|
|
48
|
-
|
65
|
+
update_stage_progress('Handling cruise', step: 10)
|
66
|
+
handler.handle_cruise
|
49
67
|
|
50
|
-
|
68
|
+
update_stage_progress('Handling days', step: 10)
|
69
|
+
handler.handle_days
|
51
70
|
|
52
|
-
|
71
|
+
update_stage_progress('Handling pick up times', step: 10)
|
72
|
+
handler.handle_pick_up_times
|
73
|
+
|
74
|
+
update_stage_progress('Handling users', step: 10)
|
75
|
+
handler.handle_users
|
76
|
+
|
77
|
+
update_stage_progress('Handling item categories', step: 10)
|
78
|
+
handler.handle_item_categories
|
79
|
+
|
80
|
+
update_stage_progress('Handling items', step: 10)
|
81
|
+
handler.handle_items
|
82
|
+
handler.handle_other_items
|
83
|
+
|
84
|
+
update_stage_progress('Handling event types', step: 10)
|
85
|
+
handler.handle_event_types
|
86
|
+
|
87
|
+
update_stage_progress('Handling events', step: 10)
|
88
|
+
handler.handle_events
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
|
93
|
+
### HAML
|
94
|
+
|
95
|
+
= simple_form_for :import, url: [:import], remote: true do |f|
|
96
|
+
.row
|
97
|
+
.col-xs-10
|
98
|
+
= f.input :file, as: :file
|
99
|
+
.col-xs-2
|
100
|
+
= f.button :submit, "Import", class: "btn btn-success"
|
101
|
+
|
102
|
+
%br
|
103
|
+
.well{style: "display:none"}
|
104
|
+
.row
|
105
|
+
.col-xs-12
|
106
|
+
.progress-status.text-primary
|
107
|
+
.row
|
108
|
+
.col-xs-12
|
109
|
+
.progress.progress-striped.active
|
110
|
+
.progress-bar
|
111
|
+
.text-primary
|
112
|
+
0%
|
113
|
+
|
114
|
+
### Ajax usage
|
115
|
+
|
116
|
+
Example of ajax call (this is a .html.haml remote: true response):
|
117
|
+
|
118
|
+
var interval;
|
119
|
+
$('.hermes-import .well').show();
|
120
|
+
interval = setInterval(function(){
|
53
121
|
$.ajax({
|
54
|
-
url: '/
|
122
|
+
url: '/progress-job/' + #{@job.id},
|
55
123
|
success: function(job){
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
124
|
+
var stage, progress;
|
125
|
+
|
126
|
+
// If there are errors
|
127
|
+
if (job.last_error != null) {
|
128
|
+
$('.progress-status').addClass('text-danger').text(job.progress_stage);
|
129
|
+
$('.progress-bar').addClass('progress-bar-danger');
|
130
|
+
$('.progress').removeClass('active');
|
131
|
+
clearInterval(interval);
|
132
|
+
}
|
133
|
+
|
134
|
+
// Upload stage
|
135
|
+
if (job.progress_stage != null){
|
136
|
+
stage = job.progress_stage;
|
137
|
+
progress = job.progress_current / job.progress_max * 100;
|
138
|
+
} else {
|
139
|
+
progress = 0;
|
140
|
+
stage = 'Uploading file';
|
141
|
+
}
|
142
|
+
|
143
|
+
// In job stage
|
144
|
+
if (progress !== 0){
|
145
|
+
$('.progress-bar').css('width', progress + '%').text(progress + '%');
|
146
|
+
}
|
147
|
+
|
148
|
+
$('.progress-status').text(stage);
|
149
|
+
},
|
150
|
+
error: function(){
|
151
|
+
// Job is no loger in database which means it finished successfuly
|
152
|
+
$('.progress').removeClass('active');
|
153
|
+
$('.progress-bar').css('width', '100%').text('100%');
|
154
|
+
$('.progress-status').text('Successfully imported!');
|
155
|
+
clearInterval(interval);
|
68
156
|
}
|
69
|
-
})
|
70
|
-
});
|
71
|
-
|
157
|
+
})
|
158
|
+
},100);
|
72
159
|
|
73
160
|
## Contributing
|
74
161
|
|
data/lib/progress_job/base.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module ProgressJob
|
2
2
|
class Base
|
3
|
-
|
4
|
-
def initialize(progress_max)
|
3
|
+
def initialize(progress_max: 100)
|
5
4
|
@progress_max = progress_max
|
6
5
|
end
|
7
6
|
|
@@ -24,8 +23,12 @@ module ProgressJob
|
|
24
23
|
update_progress(step: step)
|
25
24
|
end
|
26
25
|
|
26
|
+
def update_progress_max(progress_max)
|
27
|
+
@job.update_column(:progress_max, progress_max)
|
28
|
+
end
|
29
|
+
|
27
30
|
def error(job, exception)
|
28
31
|
job.update_column(:progress_stage, exception.message)
|
29
32
|
end
|
30
33
|
end
|
31
|
-
end
|
34
|
+
end
|
data/lib/progress_job/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: progress_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stjepan Hadjic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|