delayed_worker 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3ae32e6e8aa2483e0b350a9b343bf0eddd775c5e
4
- data.tar.gz: 81944b89caec11b4d239dd0bf948457b2b44904d
3
+ metadata.gz: fd73ac07e571bdb211e677b7c99126f3fdb54d28
4
+ data.tar.gz: 8094e9bac10b6bcf2e7e84627d32978eb2d03a3f
5
5
  SHA512:
6
- metadata.gz: e98721ffbf9d812be9b752a246805d4f9fed7f9b37416fd911cd59cc03ec5ff377354443b8569652a2e0e8aebc182eb40cd5283ca5e3cc33f82c5183990a3b5e
7
- data.tar.gz: 82eab53419ae9cd959a26f9b27d895cbda6f9cccd65f10ecd22b3477511a26aa4db1a00b88a8be43bc611b49dafd5acf7fb174fb118a9dba4f17fed3a21fd6c6
6
+ metadata.gz: 32f5152f43fe0346169c760274bfc6e36cbbaf1f62d8629d0b1cd94c785db664c8db60ace3c5e2266a001a6ae7524e000a2a52f5216fec8255362f9e02be0b4a
7
+ data.tar.gz: df7c6fefb9714115e84cd930651a1ec2d399f76afa9c8f2cb2543d0fe8fb5ac080394107dfdb688fbd5bb7065cff7413bf1285eda81a7a6caa5e202fe14b50bd
data/README.md CHANGED
@@ -1,10 +1,11 @@
1
- # DelayedWorker [![Build Status](https://travis-ci.org/zw963/delayed_worker.svg?branch=master)](https://travis-ci.org/zw963/delayed_worker) [![Gem Version](https://badge.fury.io/rb/delayed_worker.svg)](http://badge.fury.io/rb/delayed_worker)
1
+ e# DelayedWorker [![Build Status](https://travis-ci.org/zw963/delayed_worker.svg?branch=master)](https://travis-ci.org/zw963/delayed_worker) [![Gem Version](https://badge.fury.io/rb/delayed_worker.svg)](http://badge.fury.io/rb/delayed_worker)
2
2
 
3
- TODO: Write a gem description
3
+ This gem is intend for write delayed job with easy and clean.
4
4
 
5
5
  ## Philosophy
6
6
 
7
- TODO: Write philosophy
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
- TODO: Write usage instructions here
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
- * MRI 1.9.3+
28
- * Rubinius 2.2+
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 `gem install --dev delayed_worker` or `bundle`.
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`.
@@ -1,5 +1,5 @@
1
1
  class DelayedWorker
2
- VERSION = [0, 0, 2]
2
+ VERSION = [0, 1, 0]
3
3
 
4
4
  class << VERSION
5
5
  def to_s
@@ -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
- type = Object.const_get(subject_type)
9
- if defined? ::ActiveRecord::Base and type < ::ActiveRecord::Base
10
- record = type.find(subject_id)
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.2
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: 1.9.1
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: []