Permalink
Browse files

make send_later work for module methods

  • Loading branch information...
1 parent e7661d3 commit a67dc3823a129dbac14a1a2be517a5d93894fad2 helbig@mediapeers.com committed Mar 23, 2011
Showing with 16 additions and 2 deletions.
  1. +2 −2 lib/delayed/performable_method.rb
  2. +14 −0 spec/delayed_method_spec.rb
View
4 lib/delayed/performable_method.rb
@@ -38,7 +38,7 @@ def load(arg)
def dump(arg)
case arg
- when Class then class_to_string(arg)
+ when Class, Module then class_to_string(arg)
when ActiveRecord::Base then ar_to_string(arg)
else arg
end
@@ -52,4 +52,4 @@ def class_to_string(obj)
"CLASS:#{obj.name}"
end
end
-end
+end
View
14 spec/delayed_method_spec.rb
@@ -11,6 +11,12 @@ def say_hello
end
end
+module RandomModule
+ def self.say_hello
+ 'hello'
+ end
+end
+
class ErrorObject
def throw
@@ -110,6 +116,14 @@ def read(story)
job.payload_object.perform.should == 'Epilog: Once upon...'
end
+ it "should store the object as string if it's a module" do
+ RandomModule.send_later(:say_hello)
+ job = Delayed::Job.find(:first)
+ job.payload_object.method.should == :say_hello
+ job.payload_object.object.should == "CLASS:RandomModule"
+ job.payload_object.perform.should == 'hello'
+ end
+
it "should call send later on methods which are wrapped with handle_asynchronously" do
story = Story.create :text => 'Once upon...'

0 comments on commit a67dc38

Please sign in to comment.