perform_later 1.0.8 → 1.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.
- data/lib/object_perform_later.rb +3 -2
- data/lib/perform_later/version.rb +1 -1
- data/lib/perform_later/workers/active_record/lone_worker.rb +1 -1
- data/lib/resque/plugins/later/method.rb +3 -2
- data/spec/lib/object_perform_later_spec.rb +12 -2
- data/spec/lib/resque/plugins/later/method_spec.rb +16 -0
- data/spec/support/database_models.rb +9 -0
- metadata +1 -1
data/lib/object_perform_later.rb
CHANGED
@@ -20,9 +20,10 @@ module ObjectPerformLater
|
|
20
20
|
private
|
21
21
|
def perform_later_enqueue(worker, queue, method, args)
|
22
22
|
if PerformLater.config.enabled?
|
23
|
-
Resque::Job.create(queue, worker, self.name, method, args)
|
23
|
+
Resque::Job.create(queue, worker, self.name, method, *args)
|
24
24
|
else
|
25
|
-
|
25
|
+
args = PerformLater::ArgsParser.args_from_resque(args)
|
26
|
+
self.send(method, *args)
|
26
27
|
end
|
27
28
|
end
|
28
29
|
end
|
@@ -4,7 +4,7 @@ module PerformLater
|
|
4
4
|
class LoneWorker
|
5
5
|
def self.perform(klass, id, method, args)
|
6
6
|
# Remove the loner flag from redis
|
7
|
-
digest = PerformLater::PayloadHelper.get_digest(klass,
|
7
|
+
digest = PerformLater::PayloadHelper.get_digest(klass, method, args)
|
8
8
|
Resque.redis.del(digest)
|
9
9
|
|
10
10
|
args = PerformLater::ArgsParser.args_from_resque(args)
|
@@ -46,11 +46,12 @@ module Resque::Plugins::Later::Method
|
|
46
46
|
end
|
47
47
|
|
48
48
|
private
|
49
|
-
def enqueue_in_resque_or_send(worker, queue, method, args)
|
49
|
+
def enqueue_in_resque_or_send(worker, queue, method, *args)
|
50
50
|
if PerformLater.config.enabled?
|
51
51
|
Resque::Job.create(queue, worker, self.class.name, self.id, method, *args)
|
52
52
|
else
|
53
|
-
|
53
|
+
args = PerformLater::ArgsParser.args_from_resque(args)
|
54
|
+
self.send(method, *args)
|
54
55
|
end
|
55
56
|
end
|
56
57
|
end
|
@@ -2,7 +2,11 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
class DummyClass
|
4
4
|
def self.do_something_really_heavy
|
5
|
-
|
5
|
+
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.do_something_with_string(value)
|
9
|
+
value
|
6
10
|
end
|
7
11
|
end
|
8
12
|
|
@@ -36,5 +40,11 @@ describe ObjectPerformLater do
|
|
36
40
|
Resque.peek(:generic, 0, 20).length.should == 1
|
37
41
|
end
|
38
42
|
|
39
|
-
|
43
|
+
describe :perform_later! do
|
44
|
+
it "should pass the correct value (String)" do
|
45
|
+
PerformLater.config.stub!(:enabled?).and_return(false)
|
46
|
+
DummyClass.should_receive(:do_something_with_string).with("Avi Tzurel")
|
47
|
+
DummyClass.perform_later!(:generic, :do_something_with_string, "Avi Tzurel")
|
48
|
+
end
|
49
|
+
end
|
40
50
|
end
|
@@ -58,6 +58,22 @@ describe Resque::Plugins::Later::Method do
|
|
58
58
|
user.should respond_to(:now_long_running_method)
|
59
59
|
end
|
60
60
|
|
61
|
+
describe :perform_later! do
|
62
|
+
it "should send the correct params on the method (with hash)" do
|
63
|
+
PerformLater.config.stub!(:enabled?).and_return(false)
|
64
|
+
user = User.create
|
65
|
+
user.should_receive(:method_with_hash_as_option).with({:some_option => "Brown fox"})
|
66
|
+
user.perform_later!(:generic, :method_with_hash_as_option, :some_option => "Brown fox")
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should send the correct params on the method (with integer)" do
|
70
|
+
PerformLater.config.stub!(:enabled?).and_return(false)
|
71
|
+
user = User.create
|
72
|
+
user.should_receive(:method_with_integer_option).with(1).and_return(1)
|
73
|
+
user.perform_later!(:generic, :method_with_integer_option, 1)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
61
77
|
|
62
78
|
|
63
79
|
|
@@ -13,4 +13,13 @@ class User < ActiveRecord::Base
|
|
13
13
|
# Your code here
|
14
14
|
end
|
15
15
|
later :lonely_long_running_method, :loner => true, queue: :some_queue_name
|
16
|
+
|
17
|
+
def method_with_hash_as_option(options = {})
|
18
|
+
options[:some_option]
|
19
|
+
end
|
20
|
+
|
21
|
+
def method_with_integer_option(integer)
|
22
|
+
integer
|
23
|
+
end
|
24
|
+
|
16
25
|
end
|