perform_later 1.0.4 → 1.0.6
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.
- data/lib/object_perform_later.rb +4 -5
- data/lib/perform_later/args_parser.rb +2 -2
- data/lib/perform_later/payload_helper.rb +15 -0
- data/lib/perform_later/version.rb +1 -1
- data/lib/perform_later/workers/active_record/lone_worker.rb +3 -3
- data/lib/perform_later/workers/objects/lone_worker.rb +2 -2
- data/lib/perform_later.rb +2 -1
- data/lib/resque/plugins/later/method.rb +3 -3
- data/spec/lib/perform_later/args_parser_spec.rb +3 -3
- data/spec/lib/perform_later/payload_helper_spec.rb +23 -0
- metadata +4 -1
data/lib/object_perform_later.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
module ObjectPerformLater
|
2
|
-
|
3
2
|
def perform_later(queue, method, *args)
|
4
3
|
args = PerformLater::ArgsParser.args_to_resque(args)
|
5
4
|
|
@@ -9,8 +8,8 @@ module ObjectPerformLater
|
|
9
8
|
|
10
9
|
def perform_later!(queue, method, *args)
|
11
10
|
args = PerformLater::ArgsParser.args_to_resque(args)
|
12
|
-
|
13
|
-
|
11
|
+
|
12
|
+
digest = PerformLater::PayloadHelper.get_digest(self.name, method, args)
|
14
13
|
return "EXISTS!" unless Resque.redis.get(digest).blank?
|
15
14
|
Resque.redis.set(digest, 'EXISTS')
|
16
15
|
|
@@ -21,9 +20,9 @@ module ObjectPerformLater
|
|
21
20
|
private
|
22
21
|
def perform_later_enqueue(worker, queue, method, args)
|
23
22
|
if PerformLater.config.enabled?
|
24
|
-
Resque::Job.create(queue, worker, self.name, method,
|
23
|
+
Resque::Job.create(queue, worker, self.name, method, args)
|
25
24
|
else
|
26
|
-
self.send(method,
|
25
|
+
self.send(method, args)
|
27
26
|
end
|
28
27
|
end
|
29
28
|
end
|
@@ -8,7 +8,7 @@ module PerformLater
|
|
8
8
|
YAML_STRING_FORMAT = /\A---/
|
9
9
|
|
10
10
|
def self.args_to_resque(*args)
|
11
|
-
args = args.map { |o|
|
11
|
+
args = args.flatten.map { |o|
|
12
12
|
case o
|
13
13
|
when ActiveRecord::Base
|
14
14
|
"AR:#{o.class.name}:#{o.id}"
|
@@ -23,7 +23,7 @@ module PerformLater
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def self.args_from_resque(*args)
|
26
|
-
args = args.map { |o|
|
26
|
+
args = args.flatten.map { |o|
|
27
27
|
if o
|
28
28
|
case o
|
29
29
|
when CLASS_STRING_FORMAT then $1.constantize
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module PerformLater
|
2
|
+
class PayloadHelper
|
3
|
+
def self.get_digest(klass, method, *args)
|
4
|
+
args = args.flatten
|
5
|
+
payload = {:class => klass, :method => method.to_s, :args => args}.to_s
|
6
|
+
|
7
|
+
puts payload
|
8
|
+
digest = Digest::MD5.hexdigest(payload)
|
9
|
+
|
10
|
+
|
11
|
+
puts "Digest is: #{digest}"
|
12
|
+
digest
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -2,9 +2,9 @@ module PerformLater
|
|
2
2
|
module Workers
|
3
3
|
module ActiveRecord
|
4
4
|
class LoneWorker
|
5
|
-
def self.perform(klass, id, method,
|
5
|
+
def self.perform(klass, id, method, args)
|
6
6
|
# Remove the loner flag from redis
|
7
|
-
digest =
|
7
|
+
digest = PerformLater::PayloadHelper.get_digest(klass, method_name, args)
|
8
8
|
Resque.redis.del(digest)
|
9
9
|
|
10
10
|
args = PerformLater::ArgsParser.args_from_resque(args)
|
@@ -16,4 +16,4 @@ module PerformLater
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
19
|
-
end
|
19
|
+
end
|
@@ -3,8 +3,8 @@ module PerformLater
|
|
3
3
|
module Objects
|
4
4
|
class LoneWorker
|
5
5
|
def self.perform(klass_name, method, *args)
|
6
|
-
#
|
7
|
-
digest =
|
6
|
+
#
|
7
|
+
digest = PerformLater::PayloadHelper.get_digest(klass_name, method, args)
|
8
8
|
Resque.redis.del(digest)
|
9
9
|
|
10
10
|
args = PerformLater::ArgsParser.args_from_resque(args)
|
data/lib/perform_later.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'active_support/dependencies'
|
2
2
|
require 'perform_later/version'
|
3
3
|
require 'perform_later/config'
|
4
|
-
require '
|
4
|
+
require 'perform_later/payload_helper'
|
5
5
|
require 'perform_later/args_parser'
|
6
|
+
require 'resque'
|
6
7
|
require 'active_record'
|
7
8
|
require 'resque_mailer_patch'
|
8
9
|
require 'object_perform_later'
|
@@ -12,10 +12,10 @@ module Resque::Plugins::Later::Method
|
|
12
12
|
klass = PerformLater::Workers::ActiveRecord::Worker
|
13
13
|
klass = PerformLater::Workers::ActiveRecord::LoneWorker if loner
|
14
14
|
args = PerformLater::ArgsParser.args_to_resque(args)
|
15
|
-
digest =
|
15
|
+
digest = PerformLater::PayloadHelper.get_digest(klass, method_name, args)
|
16
16
|
|
17
17
|
if loner
|
18
|
-
return "EXISTS!" unless Resque.redis.get(digest).blank?
|
18
|
+
return "AR EXISTS!" unless Resque.redis.get(digest).blank?
|
19
19
|
Resque.redis.set(digest, 'EXISTS')
|
20
20
|
end
|
21
21
|
|
@@ -31,7 +31,7 @@ module Resque::Plugins::Later::Method
|
|
31
31
|
args = PerformLater::ArgsParser.args_to_resque(args)
|
32
32
|
Resque::Job.create(queue, PerformLater::Workers::ActiveRecord::Worker, self.class.name, self.id, method, *args)
|
33
33
|
else
|
34
|
-
self.send(method,
|
34
|
+
self.send(method, args)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
@@ -13,12 +13,12 @@ describe PerformLater::ArgsParser do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should convert a hash into YAML string so that Resque will be able to JSON convert it" do
|
16
|
-
hash = {name: "something", other: "something else"}
|
16
|
+
hash = { name: "something", other: "something else" }
|
17
17
|
subject.args_to_resque(hash)[0].class.name.should == "String"
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should be able to load a yaml from the string and translate it into the same hash again" do
|
21
|
-
hash = {name: "something", other: "something else"}
|
21
|
+
hash = { name: "something", other: "something else" }
|
22
22
|
yaml = subject.args_to_resque(hash)[0]
|
23
23
|
|
24
24
|
loaded_yaml = YAML.load(yaml)
|
@@ -35,7 +35,7 @@ describe PerformLater::ArgsParser do
|
|
35
35
|
|
36
36
|
context "args from resque" do
|
37
37
|
it "should give me a hash back when I pass a yaml representation of it" do
|
38
|
-
hash = {name: "something", other: "something else"}
|
38
|
+
hash = { name: "something", other: "something else" }
|
39
39
|
yaml = hash.to_yaml
|
40
40
|
|
41
41
|
args = subject.args_from_resque(yaml)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
describe PerformLater::PayloadHelper do
|
5
|
+
subject { PerformLater::PayloadHelper }
|
6
|
+
|
7
|
+
describe :get_digest do
|
8
|
+
it "should o something" do
|
9
|
+
user = User.create
|
10
|
+
|
11
|
+
digest = Digest::MD5.hexdigest({ :class => "DummyClass",
|
12
|
+
:method => :some_method,
|
13
|
+
:args => ["AR:User:#{user.id}"]
|
14
|
+
}.to_s)
|
15
|
+
|
16
|
+
args = PerformLater::ArgsParser.args_to_resque(user)
|
17
|
+
puts args
|
18
|
+
subject.get_digest("DummyClass", :some_method, args).should == digest
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: perform_later
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -190,6 +190,7 @@ files:
|
|
190
190
|
- lib/perform_later.rb
|
191
191
|
- lib/perform_later/args_parser.rb
|
192
192
|
- lib/perform_later/config.rb
|
193
|
+
- lib/perform_later/payload_helper.rb
|
193
194
|
- lib/perform_later/railtie.rb
|
194
195
|
- lib/perform_later/version.rb
|
195
196
|
- lib/perform_later/workers/active_record/lone_worker.rb
|
@@ -203,6 +204,7 @@ files:
|
|
203
204
|
- spec/lib/object_perform_later_spec.rb
|
204
205
|
- spec/lib/perform_later/args_parser_spec.rb
|
205
206
|
- spec/lib/perform_later/config_spec.rb
|
207
|
+
- spec/lib/perform_later/payload_helper_spec.rb
|
206
208
|
- spec/lib/perform_later_spec.rb
|
207
209
|
- spec/lib/resque/plugins/later/method_spec.rb
|
208
210
|
- spec/spec_helper.rb
|
@@ -239,6 +241,7 @@ test_files:
|
|
239
241
|
- spec/lib/object_perform_later_spec.rb
|
240
242
|
- spec/lib/perform_later/args_parser_spec.rb
|
241
243
|
- spec/lib/perform_later/config_spec.rb
|
244
|
+
- spec/lib/perform_later/payload_helper_spec.rb
|
242
245
|
- spec/lib/perform_later_spec.rb
|
243
246
|
- spec/lib/resque/plugins/later/method_spec.rb
|
244
247
|
- spec/spec_helper.rb
|