Commit 1b94cf38fbda42ea5f85061059fd855d99a5a787
1 parent
149b1d38
Exists in
master
and in
28 other branches
Move marking as spam and ham into the background
ActionItem2306
Showing
4 changed files
with
18 additions
and
8 deletions
Show diff stats
app/models/comment.rb
... | ... | @@ -91,7 +91,7 @@ class Comment < ActiveRecord::Base |
91 | 91 | after_create :schedule_notification |
92 | 92 | |
93 | 93 | def schedule_notification |
94 | - Delayed::Job.enqueue CommentHandler.new(self.id) | |
94 | + Delayed::Job.enqueue CommentHandler.new(self.id, :verify_and_notify) | |
95 | 95 | end |
96 | 96 | |
97 | 97 | delegate :environment, :to => :profile |
... | ... | @@ -214,15 +214,23 @@ class Comment < ActiveRecord::Base |
214 | 214 | def spam! |
215 | 215 | self.spam = true |
216 | 216 | self.save! |
217 | - plugins.dispatch(:comment_marked_as_spam, self) | |
217 | + Delayed::Job.enqueue(CommentHandler.new(self.id, :marked_as_spam)) | |
218 | 218 | self |
219 | 219 | end |
220 | 220 | |
221 | 221 | def ham! |
222 | 222 | self.spam = false |
223 | 223 | self.save! |
224 | - plugins.dispatch(:comment_marked_as_ham, self) | |
224 | + Delayed::Job.enqueue(CommentHandler.new(self.id, :marked_as_ham)) | |
225 | 225 | self |
226 | 226 | end |
227 | 227 | |
228 | + def marked_as_spam | |
229 | + plugins.dispatch(:comment_marked_as_spam, self) | |
230 | + end | |
231 | + | |
232 | + def marked_as_ham | |
233 | + plugins.dispatch(:comment_marked_as_ham, self) | |
234 | + end | |
235 | + | |
228 | 236 | end | ... | ... |
app/models/comment_handler.rb
1 | -class CommentHandler < Struct.new(:comment_id) | |
1 | +class CommentHandler < Struct.new(:comment_id, :method) | |
2 | 2 | |
3 | 3 | def perform |
4 | 4 | comment = Comment.find(comment_id) |
5 | - comment.verify_and_notify | |
5 | + comment.send(method) | |
6 | 6 | rescue ActiveRecord::RecordNotFound |
7 | 7 | # just ignore non-existing comments |
8 | 8 | end | ... | ... |
test/unit/comment_handler_test.rb
... | ... | @@ -12,11 +12,11 @@ class CommentHandlerTest < ActiveSupport::TestCase |
12 | 12 | handler.perform |
13 | 13 | end |
14 | 14 | |
15 | - should 'call Comment#notify_by_mail' do | |
16 | - handler = CommentHandler.new(-1) | |
15 | + should 'call Comment#whatever_method' do | |
16 | + handler = CommentHandler.new(-1, :whatever_method) | |
17 | 17 | comment = Comment.new |
18 | 18 | Comment.stubs(:find).with(-1).returns(comment) |
19 | - comment.expects(:verify_and_notify) | |
19 | + comment.expects(:whatever_method) | |
20 | 20 | |
21 | 21 | handler.perform |
22 | 22 | end | ... | ... |
test/unit/comment_test.rb
... | ... | @@ -517,6 +517,7 @@ class CommentTest < ActiveSupport::TestCase |
517 | 517 | c = create_comment |
518 | 518 | |
519 | 519 | c.spam! |
520 | + process_delayed_job_queue | |
520 | 521 | |
521 | 522 | assert_equal c, SpamNotification.marked_as_spam |
522 | 523 | end |
... | ... | @@ -527,6 +528,7 @@ class CommentTest < ActiveSupport::TestCase |
527 | 528 | c = create_comment |
528 | 529 | |
529 | 530 | c.ham! |
531 | + process_delayed_job_queue | |
530 | 532 | |
531 | 533 | assert_equal c, SpamNotification.marked_as_ham |
532 | 534 | end | ... | ... |