delayed_worker 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c248fd145b3773968622d1264046c0c0d150c521
4
+ data.tar.gz: e9eac1495abf8b3779e5210a3dc5fecfa2b10603
5
+ SHA512:
6
+ metadata.gz: ef0b747fc61eecefcc1cdf0e9724ab43b5ebfbc112414f110292ef11fea6a70716b874f25ef5121dc7100923a4a98daf6b9f7bd2e8ebb35cd5423927af46f354
7
+ data.tar.gz: 84bf1f299f2b9f3e34ef4c577da4fe0ef6e9a463aa6978aec3889f92e05f7c08423c7ffdaee65abe86f14b53d89a205ae5b8d12f717f8db64ed5dc8e6499e607
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2018 Billy.Zheng
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,52 @@
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)
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Philosophy
6
+
7
+ TODO: Write philosophy
8
+
9
+ ## Getting Started
10
+
11
+ Install via Rubygems
12
+
13
+ $ gem install delayed_worker
14
+
15
+ OR ...
16
+
17
+ Add to your Gemfile
18
+
19
+ gem 'delayed_worker'
20
+
21
+ ## Usage
22
+
23
+ TODO: Write usage instructions here
24
+
25
+ ## Support
26
+
27
+ * MRI 1.9.3+
28
+ * Rubinius 2.2+
29
+
30
+ ## Limitations
31
+
32
+ No known limit.
33
+
34
+ ## History
35
+
36
+ See [CHANGELOG](https://github.com/zw963/delayed_worker/blob/master/CHANGELOG) for details.
37
+
38
+ ## Contributing
39
+
40
+ * [Bug reports](https://github.com/zw963/delayed_worker/issues)
41
+ * [Source](https://github.com/zw963/delayed_worker)
42
+ * Patches:
43
+ * Fork on Github.
44
+ * Run `gem install --dev delayed_worker` or `bundle`.
45
+ * Create your feature branch: `git checkout -b my-new-feature`.
46
+ * Commit your changes: `git commit -am 'Add some feature'`.
47
+ * Push to the branch: `git push origin my-new-feature`.
48
+ * Send a pull request :D.
49
+
50
+ ## license
51
+
52
+ Released under the MIT license, See [LICENSE](https://github.com/zw963/delayed_worker/blob/master/LICENSE) for details.
@@ -0,0 +1,27 @@
1
+ require 'method_source'
2
+
3
+ class DelayedWorker
4
+ module Concern
5
+ def add_delayed_worker(
6
+ time: Time.now,
7
+ job_name: 'Delayed worker',
8
+ subject_id: respond_to?(:id) ? id : nil,
9
+ subject_type: self.class,
10
+ params: {},
11
+ &block
12
+ )
13
+ callback = block.source.split("\n")[1..-2].join("\n")
14
+
15
+ delayed_worker_log "Delayed worker:\033[0;33m #{job_name} \033[0mis adding into queue!"
16
+
17
+ # valid type: Time, DateTime, ActiveSupport::TimeWithZone or 5.minutes (a integer)
18
+ if (time.respond_to?(:to_time) and time.to_time.is_a?(Time)) or time.is_a?(Integer)
19
+ DelayedWorker.perform_in(time, job_name, subject_id, subject_type, callback, params)
20
+ else
21
+ delayed_worker_log "Delayed worker:\033[0;33m #{job_name} \033[0mtime invalid!"
22
+ end
23
+ end
24
+ end
25
+ ::ActiveRecord::Base.send(:include, Concern)
26
+ ::ActionController::Base.send(:include, Concern)
27
+ end
@@ -0,0 +1,9 @@
1
+ class DelayedWorker
2
+ VERSION = [0, 0, 1]
3
+
4
+ class << VERSION
5
+ def to_s
6
+ join(?.)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,20 @@
1
+ require 'sidekiq'
2
+
3
+ class DelayedWorker
4
+ include Sidekiq::Worker
5
+ sidekiq_options backtrace: true, queue: 'default'
6
+
7
+ def perform(job_name, subject_id, subject_type, callback, params)
8
+ type = Object.const_get(subject_type)
9
+ if type < ActiveRecord::Base
10
+ record = type.find(subject_id)
11
+ delayed_worker_log "Delayed worker:\033[0;33m #{job_name} \033[0mis start!"
12
+ record.instance_eval(callback, __FILE__, __LINE__)
13
+ else
14
+ delayed_worker_log "Delayed worker:\033[0;33m #{job_name} \033[0mis start!"
15
+ instance_eval(callback, __FILE__, __LINE__)
16
+ end
17
+
18
+ delayed_worker_log "Delayed worker:\033[0;33m #{job_name} \033[0mis finished!"
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ require 'delayed_worker/workers/delayed_worker'
2
+ require 'delayed_worker/concern'
3
+ require 'delayed_worker/version'
4
+
5
+ def delayed_worker_log(msg)
6
+ if defined? Rails and Rails.respond_to?(:logger)
7
+ Rails.logger.info msg
8
+ else
9
+ $stderr.puts msg
10
+ end
11
+ end
metadata ADDED
@@ -0,0 +1,120 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: delayed_worker
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Billy.Zheng
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-02-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sidekiq
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.5'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: method_source
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.8'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activerecord
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: actionpack
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">"
60
+ - !ruby/object:Gem::Version
61
+ version: '4.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.3'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.3'
83
+ description: ''
84
+ email:
85
+ - vil963@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - LICENSE
91
+ - README.md
92
+ - lib/delayed_worker.rb
93
+ - lib/delayed_worker/concern.rb
94
+ - lib/delayed_worker/version.rb
95
+ - lib/delayed_worker/workers/delayed_worker.rb
96
+ homepage: http://github.com/zw963/delayed_worker
97
+ licenses:
98
+ - MIT
99
+ metadata: {}
100
+ post_install_message:
101
+ rdoc_options: []
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: 1.9.1
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ requirements: []
115
+ rubyforge_project:
116
+ rubygems_version: 2.6.14
117
+ signing_key:
118
+ specification_version: 4
119
+ summary: ''
120
+ test_files: []