livetask 0.0.5 → 0.0.6
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.
- data/README.md +56 -2
- data/lib/livetask.rb +2 -3
- data/lib/livetask/sidekiq/web.rb +53 -0
- data/lib/livetask/sidekiq/worker.rb +46 -0
- data/lib/livetask/version.rb +1 -1
- data/livetask.gemspec +1 -1
- metadata +5 -5
- data/lib/livetask/sidekiq_web.rb +0 -51
- data/lib/livetask/sidekiq_worker.rb +0 -44
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Livetask
|
2
2
|
|
3
|
-
|
3
|
+
Live broadcast from your background jobs.
|
4
|
+
Easy to use and efficient to build progress monitoring of background tasks on your web pages.
|
4
5
|
|
5
6
|
## Installation
|
6
7
|
|
@@ -18,7 +19,60 @@ Or install it yourself as:
|
|
18
19
|
|
19
20
|
## Usage
|
20
21
|
|
21
|
-
|
22
|
+
### Sidekiq
|
23
|
+
#### Worker
|
24
|
+
Include Livetask::Sidekiq::Worker inside of your sidekiq worker class
|
25
|
+
```ruby
|
26
|
+
include Livetask::Sidekiq::Web
|
27
|
+
```
|
28
|
+
##### Task name
|
29
|
+
```ruby
|
30
|
+
set_task_name('Eduard')
|
31
|
+
```
|
32
|
+
##### Logging
|
33
|
+
```ruby
|
34
|
+
add_to_log('I were logged and successfully stored in redis!')
|
35
|
+
```
|
36
|
+
##### Status
|
37
|
+
```ruby
|
38
|
+
set_status('in progress')
|
39
|
+
```
|
40
|
+
##### Progress
|
41
|
+
```ruby
|
42
|
+
set_progress(100) #Completed!
|
43
|
+
```
|
44
|
+
|
45
|
+
#### Web
|
46
|
+
Include Livetask::Sidekiq::Web inside of your controller
|
47
|
+
```ruby
|
48
|
+
include Livetask::Sidekiq::Web
|
49
|
+
```
|
50
|
+
##### List of all recorded tasks ids
|
51
|
+
```ruby
|
52
|
+
get_tasks_ids
|
53
|
+
```
|
54
|
+
##### Task name
|
55
|
+
```ruby
|
56
|
+
get_task_name(task_id)
|
57
|
+
```
|
58
|
+
##### Logging
|
59
|
+
To get a full log use:
|
60
|
+
```ruby
|
61
|
+
get_log(task_id)
|
62
|
+
```
|
63
|
+
If you want to limit returned log, you can set 'from' and 'to' limits
|
64
|
+
```ruby
|
65
|
+
get_log(task_id, 3) # Will return last 3 lines of log
|
66
|
+
get_log(task_id, 12, 2) # Will return last 10 lines of log except the latest 2
|
67
|
+
```
|
68
|
+
##### Status
|
69
|
+
```ruby
|
70
|
+
get_status(task_id)
|
71
|
+
```
|
72
|
+
##### Progress
|
73
|
+
```ruby
|
74
|
+
get_progress(task_id)
|
75
|
+
```
|
22
76
|
|
23
77
|
## Contributing
|
24
78
|
|
data/lib/livetask.rb
CHANGED
@@ -0,0 +1,53 @@
|
|
1
|
+
module Livetask
|
2
|
+
module Sidekiq
|
3
|
+
module Web
|
4
|
+
|
5
|
+
def self.show_tasks
|
6
|
+
"<div id='livetask'>Loading tasks...</div>"
|
7
|
+
end
|
8
|
+
|
9
|
+
def get_tasks_ids
|
10
|
+
Sidekiq.redis do |conn|
|
11
|
+
conn.zrevrange("livetask-tasks", 0, (2**(0.size * 8 -2) -1))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_task_name(jid)
|
16
|
+
Sidekiq.redis do |conn|
|
17
|
+
conn.hget("livetask-#{jid}-info", "name")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def get_progress(jid)
|
22
|
+
Sidekiq.redis do |conn|
|
23
|
+
conn.hget("livetask-#{jid}-info", "progress")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_status(jid)
|
28
|
+
Sidekiq.redis do |conn|
|
29
|
+
conn.hget("livetask-#{jid}-info", "status")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def get_log(jid, to = (2**(0.size * 8 -2) -1), from = 0)
|
34
|
+
log_array = []
|
35
|
+
Sidekiq.redis do |conn|
|
36
|
+
log_array = conn.zrevrange("livetask-#{jid}-log", from, to, :with_scores => true)
|
37
|
+
end
|
38
|
+
log = ""
|
39
|
+
log_array.each do |line|
|
40
|
+
log += "#{Time.at(line.last)} #{line.first[5..-1]}\n"
|
41
|
+
end
|
42
|
+
log
|
43
|
+
end
|
44
|
+
|
45
|
+
def get_last_changed_at(jid)
|
46
|
+
Sidekiq.redis do |conn|
|
47
|
+
Time.at(conn.zscore("livetask-tasks", jid)).to_datetime
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Livetask
|
2
|
+
module Sidekiq
|
3
|
+
module Worker
|
4
|
+
|
5
|
+
def set_task_name(name)
|
6
|
+
return false unless @jid
|
7
|
+
register_task(@jid)
|
8
|
+
Sidekiq.redis do |conn|
|
9
|
+
conn.hset("livetask-#{@jid}-info", "name", name)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def set_progress(progress)
|
14
|
+
return false unless @jid
|
15
|
+
register_task(@jid)
|
16
|
+
Sidekiq.redis do |conn|
|
17
|
+
conn.hset("livetask-#{@jid}-info", "progress", progress)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def set_status(status)
|
22
|
+
return false unless @jid
|
23
|
+
register_task(@jid)
|
24
|
+
Sidekiq.redis do |conn|
|
25
|
+
conn.hset("livetask-#{@jid}-info", "status", status)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def add_to_log(string)
|
30
|
+
return false unless @jid
|
31
|
+
register_task(@jid)
|
32
|
+
Sidekiq.redis do |conn|
|
33
|
+
conn.zadd("livetask-#{@jid}-log", Time.now.to_i, "#{Time.now.to_i.to_s[-5..-1]}#{string}")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
def register_task(jid)
|
39
|
+
Sidekiq.redis do |conn|
|
40
|
+
conn.zadd("livetask-tasks", Time.now.to_i, jid.to_s)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/livetask/version.rb
CHANGED
data/livetask.gemspec
CHANGED
@@ -4,7 +4,7 @@ require File.expand_path('../lib/livetask/version', __FILE__)
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ["Alexey Krasnoperov"]
|
6
6
|
gem.email = ["Alexey.Krasnoperov@gmail.com"]
|
7
|
-
gem.description = %q{Live broadcast from a background
|
7
|
+
gem.description = %q{Live broadcast from a background jobs}
|
8
8
|
gem.summary = %q{Gem that displays real-time progress of background job on your page}
|
9
9
|
gem.homepage = ""
|
10
10
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: livetask
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,9 +9,9 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-05 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
|
-
description: Live broadcast from a background
|
14
|
+
description: Live broadcast from a background jobs
|
15
15
|
email:
|
16
16
|
- Alexey.Krasnoperov@gmail.com
|
17
17
|
executables: []
|
@@ -24,8 +24,8 @@ files:
|
|
24
24
|
- README.md
|
25
25
|
- Rakefile
|
26
26
|
- lib/livetask.rb
|
27
|
-
- lib/livetask/
|
28
|
-
- lib/livetask/
|
27
|
+
- lib/livetask/sidekiq/web.rb
|
28
|
+
- lib/livetask/sidekiq/worker.rb
|
29
29
|
- lib/livetask/version.rb
|
30
30
|
- livetask.gemspec
|
31
31
|
homepage: ''
|
data/lib/livetask/sidekiq_web.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
module Livetask
|
2
|
-
module SidekiqWeb
|
3
|
-
|
4
|
-
def self.show_tasks
|
5
|
-
"<div id='livetask'>Loading tasks...</div>"
|
6
|
-
end
|
7
|
-
|
8
|
-
def get_tasks_ids
|
9
|
-
Sidekiq.redis do |conn|
|
10
|
-
conn.zrevrange("livetask-tasks", 0, (2**(0.size * 8 -2) -1))
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def get_task_name(jid)
|
15
|
-
Sidekiq.redis do |conn|
|
16
|
-
conn.hget("livetask-#{jid}-info", "name")
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def get_progress(jid)
|
21
|
-
Sidekiq.redis do |conn|
|
22
|
-
conn.hget("livetask-#{jid}-info", "progress")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def get_status(jid)
|
27
|
-
Sidekiq.redis do |conn|
|
28
|
-
conn.hget("livetask-#{jid}-info", "status")
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def get_log(jid)
|
33
|
-
log_array = []
|
34
|
-
Sidekiq.redis do |conn|
|
35
|
-
log_array = conn.zrevrangebyscore("livetask-#{jid}-log", '+inf', 0, :with_scores => true)
|
36
|
-
end
|
37
|
-
log = ""
|
38
|
-
log_array.each do |line|
|
39
|
-
log += "#{Time.at(line.last)} #{line.first[5..-1]}\n"
|
40
|
-
end
|
41
|
-
log
|
42
|
-
end
|
43
|
-
|
44
|
-
def get_last_changed_at(jid)
|
45
|
-
Sidekiq.redis do |conn|
|
46
|
-
Time.at(conn.zscore("livetask-tasks", jid)).to_datetime
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
51
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
module Livetask
|
2
|
-
module SidekiqWorker
|
3
|
-
|
4
|
-
def set_task_name(name)
|
5
|
-
return false unless @jid
|
6
|
-
register_task(@jid)
|
7
|
-
Sidekiq.redis do |conn|
|
8
|
-
conn.hset("livetask-#{@jid}-info", "name", name)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def set_progress(progress)
|
13
|
-
return false unless @jid
|
14
|
-
register_task(@jid)
|
15
|
-
Sidekiq.redis do |conn|
|
16
|
-
conn.hset("livetask-#{@jid}-info", "progress", progress)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def set_status(status)
|
21
|
-
return false unless @jid
|
22
|
-
register_task(@jid)
|
23
|
-
Sidekiq.redis do |conn|
|
24
|
-
conn.hset("livetask-#{@jid}-info", "status", status)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def add_to_log(string)
|
29
|
-
return false unless @jid
|
30
|
-
register_task(@jid)
|
31
|
-
Sidekiq.redis do |conn|
|
32
|
-
conn.zadd("livetask-#{@jid}-log", Time.now.to_i, "#{Time.now.to_i.to_s[-5..-1]}#{string}")
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
def register_task(jid)
|
38
|
-
Sidekiq.redis do |conn|
|
39
|
-
conn.zadd("livetask-tasks", Time.now.to_i, jid.to_s)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|