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 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: []