kungfuig 0.8.1 → 0.9.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/kungfuig.gemspec +2 -0
- data/lib/kungfuig/jobber.rb +32 -3
- data/lib/kungfuig/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a0b46dbfa1f0a7552ee0d0402229d32610e5471
|
4
|
+
data.tar.gz: 0ff22f3f9ca89fc09c2d91b0edf6315d976adaf9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d76c042ca4cb9b223fd161dfe0ad9ddd3f378a9b41067cc9f1f2532b84656412df6fca2638bd8342c71c7e98031d67a04806b2978c793462517ce306c0967991
|
7
|
+
data.tar.gz: c01808c5f08bfe545bedb768e41de95fc4c371ed4a5bfb5044e8caac78ff13d5b8e5e0daae1ac130a5838e2cc36c948226d600627043e02955ed0b8525556625
|
data/kungfuig.gemspec
CHANGED
@@ -33,4 +33,6 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_development_dependency 'yard', '~> 0'
|
34
34
|
|
35
35
|
spec.add_development_dependency 'rspec-sidekiq', '~> 2'
|
36
|
+
spec.add_development_dependency 'flexmock', '~> 1.3'
|
37
|
+
# spec.add_development_dependency 'mock_redis', '~> 0.17'
|
36
38
|
end
|
data/lib/kungfuig/jobber.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
|
1
|
+
require 'digest'
|
2
2
|
require 'rubygems/exceptions'
|
3
|
+
require 'kungfuig/aspector'
|
3
4
|
|
4
5
|
begin
|
5
6
|
require 'sidekiq'
|
7
|
+
require 'sidekiq/api'
|
6
8
|
fail LoadError.new unless Kernel.const_defined?('Sidekiq')
|
7
9
|
rescue LoadError
|
8
10
|
raise(Gem::DependencyError, "Sidekiq id required to use this functionality!")
|
@@ -32,6 +34,7 @@ module Kungfuig
|
|
32
34
|
# 'Test':
|
33
35
|
# '*': 'YoJob'
|
34
36
|
def bulk(hos)
|
37
|
+
@delayed ||= {}
|
35
38
|
@hash = Kungfuig.load_stuff hos
|
36
39
|
Kungfuig::Aspector.bulk(
|
37
40
|
@hash.map do |klazz, hash|
|
@@ -53,9 +56,16 @@ module Kungfuig
|
|
53
56
|
@hash[c.name] && @hash[c.name][method]
|
54
57
|
end)
|
55
58
|
|
56
|
-
destination = Kernel.const_get(
|
59
|
+
destination = Kernel.const_get(destination(receiver_class.name, method))
|
57
60
|
destination.send(:prepend, Kungfuig::Worker) unless destination.ancestors.include? Kungfuig::Worker
|
58
|
-
|
61
|
+
if (delay = delay(receiver_class.name, method))
|
62
|
+
digest = digest(result, receiver_class.name, method)
|
63
|
+
Sidekiq::Queue.new(destination.sidekiq_options_hash['queue'])
|
64
|
+
.find_job(@delayed.delete(digest)).tap { |j| j.delete if j }
|
65
|
+
@delayed[digest] = destination.perform_in(delay, receiver: r, method: method, result: result, **params)
|
66
|
+
else
|
67
|
+
destination.perform_async(receiver: r, method: method, result: result, **params)
|
68
|
+
end
|
59
69
|
rescue => e
|
60
70
|
Kungfuig.✍(receiver: [
|
61
71
|
"Fail [#{e.message}]",
|
@@ -63,6 +73,25 @@ module Kungfuig
|
|
63
73
|
"while #{receiver}"
|
64
74
|
].join($/), method: method, result: result, args: params)
|
65
75
|
end
|
76
|
+
|
77
|
+
def destination target, name
|
78
|
+
case @hash[target][name]
|
79
|
+
when NilClass then nil
|
80
|
+
when String, Symbol then @hash[target][name]
|
81
|
+
when Hash then @hash[target][name]['class']
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def delay target, name
|
86
|
+
@hash[target][name].is_a?(Hash) && @hash[target][name]['delay'].to_i || nil
|
87
|
+
end
|
88
|
+
|
89
|
+
def digest result, target, name
|
90
|
+
fields = @hash[target][name].is_a?(Hash) && @hash[target][name]['compare_by']
|
91
|
+
Digest::SHA256.hexdigest(
|
92
|
+
(fields.nil? ? result : fields.map { |f| result[f] }).inspect
|
93
|
+
)
|
94
|
+
end
|
66
95
|
end
|
67
96
|
end
|
68
97
|
end
|
data/lib/kungfuig/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kungfuig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kantox LTD
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-09-
|
11
|
+
date: 2016-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hashie
|
@@ -142,6 +142,20 @@ dependencies:
|
|
142
142
|
- - "~>"
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '2'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: flexmock
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - "~>"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '1.3'
|
152
|
+
type: :development
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - "~>"
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '1.3'
|
145
159
|
description: Config with goodnesses.
|
146
160
|
email:
|
147
161
|
- aleksei.matiushkin@kantox.com
|