delayed_worker 0.0.2 → 0.1.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/README.md +76 -11
- data/lib/delayed_worker/version.rb +1 -1
- data/lib/delayed_worker/workers/delayed_worker.rb +14 -3
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd73ac07e571bdb211e677b7c99126f3fdb54d28
|
4
|
+
data.tar.gz: 8094e9bac10b6bcf2e7e84627d32978eb2d03a3f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 32f5152f43fe0346169c760274bfc6e36cbbaf1f62d8629d0b1cd94c785db664c8db60ace3c5e2266a001a6ae7524e000a2a52f5216fec8255362f9e02be0b4a
|
7
|
+
data.tar.gz: df7c6fefb9714115e84cd930651a1ec2d399f76afa9c8f2cb2543d0fe8fb5ac080394107dfdb688fbd5bb7065cff7413bf1285eda81a7a6caa5e202fe14b50bd
|
data/README.md
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
# DelayedWorker [](https://travis-ci.org/zw963/delayed_worker) [](http://badge.fury.io/rb/delayed_worker)
|
1
|
+
e# DelayedWorker [](https://travis-ci.org/zw963/delayed_worker) [](http://badge.fury.io/rb/delayed_worker)
|
2
2
|
|
3
|
-
|
3
|
+
This gem is intend for write delayed job with easy and clean.
|
4
4
|
|
5
5
|
## Philosophy
|
6
6
|
|
7
|
-
|
7
|
+
We hope to see delayed executed business logic clealy in where add it into, so, all we need to be done is
|
8
|
+
just use a `do ... end block` to wrap delayed job code, it will work as expected.
|
8
9
|
|
9
10
|
## Getting Started
|
10
11
|
|
@@ -20,18 +21,82 @@ Add to your Gemfile
|
|
20
21
|
|
21
22
|
## Usage
|
22
23
|
|
23
|
-
|
24
|
-
|
24
|
+
### run worker in Rails model.
|
25
|
+
|
26
|
+
```
|
27
|
+
# == Schema Information
|
28
|
+
|
29
|
+
# Table name: test_delayed_workers
|
30
|
+
|
31
|
+
# text :string(255)
|
32
|
+
|
33
|
+
class TestDelayedWorker < ActiveRecord::Base
|
34
|
+
def update_column!
|
35
|
+
add_delayed_worker job_name: 'change text value' do
|
36
|
+
# ... do heavy task here in worker asynchronous.
|
37
|
+
# e.g. invoke exteral API or do heavy SQL query
|
38
|
+
|
39
|
+
# when done, we update text column.
|
40
|
+
update(text: 'new_value')
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
class TestDelayedWorkerController < ActionController::Base
|
47
|
+
def update_column
|
48
|
+
record = TestDelayedWorker.find(params[:id])
|
49
|
+
# invoke delayed worker
|
50
|
+
record.update_column!
|
51
|
+
end
|
52
|
+
end
|
53
|
+
```
|
54
|
+
|
55
|
+
### run worker in controller action
|
56
|
+
```
|
57
|
+
class TestDelayedWorkerController < ActionController::Base
|
58
|
+
def update_text_column
|
59
|
+
id = params[:id]
|
60
|
+
new_params = {
|
61
|
+
'text' => params[:text]
|
62
|
+
}
|
63
|
+
# we must use `params: new_params` to pass current context variable into block.
|
64
|
+
add_delayed_worker job_name: 'change text value use params in controller', subject_id: id, params: new_params do
|
65
|
+
record = TestDelayedWorker.find(subject_id)
|
66
|
+
record.update(text: params['text'])
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
```
|
71
|
+
|
72
|
+
### Run in a simple class
|
73
|
+
|
74
|
+
```
|
75
|
+
class SimpleDelayedWorker
|
76
|
+
include DelayedWorker::Concern
|
77
|
+
|
78
|
+
def some_method
|
79
|
+
add_delayed_worker job_name: 'simple delayed worker', time: 10 do
|
80
|
+
print 'run asynchronous after 10 seconds'
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
```
|
85
|
+
|
86
|
+
__IMPORTANT__ some trap you must to know:
|
87
|
+
|
88
|
+
1. Only support `do ...end` block, and `do` must not same line as `end`!
|
89
|
+
2. if need use variables defined in add_delayed_worker invoked, only support use `params` named parameter pass in.
|
90
|
+
|
25
91
|
## Support
|
26
92
|
|
27
|
-
|
28
|
-
|
93
|
+
CRuby 2.2 2.3 2.4 2.5 is support.
|
94
|
+
|
95
|
+
## Dependency
|
29
96
|
|
30
|
-
## Limitations
|
31
97
|
|
32
|
-
No known limit.
|
33
98
|
|
34
|
-
## History
|
99
|
+
## History
|
35
100
|
|
36
101
|
See [CHANGELOG](https://github.com/zw963/delayed_worker/blob/master/CHANGELOG) for details.
|
37
102
|
|
@@ -41,7 +106,7 @@ No known limit.
|
|
41
106
|
* [Source](https://github.com/zw963/delayed_worker)
|
42
107
|
* Patches:
|
43
108
|
* Fork on Github.
|
44
|
-
* Run `
|
109
|
+
* Run `bundle install`.
|
45
110
|
* Create your feature branch: `git checkout -b my-new-feature`.
|
46
111
|
* Commit your changes: `git commit -am 'Add some feature'`.
|
47
112
|
* Push to the branch: `git push origin my-new-feature`.
|
@@ -5,9 +5,20 @@ class DelayedWorker
|
|
5
5
|
sidekiq_options backtrace: true, queue: 'default'
|
6
6
|
|
7
7
|
def perform(job_name, subject_id, subject_type, callback, params)
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
_type = Object.const_get(subject_type)
|
9
|
+
_params = Hash.new do |hash, key|
|
10
|
+
if hash.key? key.to_s and not hash[key.to_s].nil?
|
11
|
+
hash[key.to_s]
|
12
|
+
else
|
13
|
+
nil
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
_params = _params.merge(params)
|
18
|
+
params = _params
|
19
|
+
|
20
|
+
if defined? ::ActiveRecord::Base and _type < ::ActiveRecord::Base
|
21
|
+
record = _type.find(subject_id)
|
11
22
|
delayed_worker_log "Delayed worker:\033[0;33m #{job_name} \033[0mis start!"
|
12
23
|
record.instance_eval(callback, __FILE__, __LINE__)
|
13
24
|
else
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delayed_worker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Billy.Zheng
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '4.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: actionpack
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,7 +94,7 @@ dependencies:
|
|
80
94
|
- - ">"
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '1.3'
|
83
|
-
description:
|
97
|
+
description: A easy-use and clean wrapper for sidekiq worker.
|
84
98
|
email:
|
85
99
|
- vil963@gmail.com
|
86
100
|
executables: []
|
@@ -105,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
105
119
|
requirements:
|
106
120
|
- - ">="
|
107
121
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
122
|
+
version: 2.2.2
|
109
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
124
|
requirements:
|
111
125
|
- - ">="
|
@@ -116,5 +130,5 @@ rubyforge_project:
|
|
116
130
|
rubygems_version: 2.6.14
|
117
131
|
signing_key:
|
118
132
|
specification_version: 4
|
119
|
-
summary:
|
133
|
+
summary: Run delayed job easy!
|
120
134
|
test_files: []
|