From df87b398c725bb62003985b77d4afd749a9a5d6b Mon Sep 17 00:00:00 2001
From: Maxwell Salzberg <maxwell@joindiaspora.com>
Date: Tue, 13 Sep 2011 16:13:56 -0700
Subject: [PATCH] MS DG; fixed cucumber

---
 app/models/relayable_retraction.rb | 6 ++++++
 app/models/signed_retraction.rb    | 4 ++++
 config/initializers/resque.rb      | 1 +
 lib/diaspora/encryptable.rb        | 6 ------
 lib/postzord/dispatcher/private.rb | 4 +++-
 5 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/app/models/relayable_retraction.rb b/app/models/relayable_retraction.rb
index 371edf2fc2..edc7fa200e 100644
--- a/app/models/relayable_retraction.rb
+++ b/app/models/relayable_retraction.rb
@@ -12,6 +12,8 @@ class RelayableRetraction < SignedRetraction
     super - ['parent_author_signature']
   end
 
+  # @param sender [User]
+  # @param target [Object]
   def self.build(sender, target)
     retraction = super
     retraction.parent_author_signature = retraction.sign_with_key(sender.encryption_key) if defined?(target.parent) && sender.person == target.parent.author
@@ -26,6 +28,10 @@ class RelayableRetraction < SignedRetraction
     self.sender_handle
   end
 
+  def relayable?
+    true
+  end
+
   def receive(recipient, sender)
     if self.target.nil?
       Rails.logger.info("event=retraction status=abort reason='no post found' sender=#{sender.diaspora_handle} target_guid=#{target_guid}")
diff --git a/app/models/signed_retraction.rb b/app/models/signed_retraction.rb
index 18e12848d7..d2aa2e1545 100644
--- a/app/models/signed_retraction.rb
+++ b/app/models/signed_retraction.rb
@@ -18,6 +18,10 @@ class SignedRetraction
                 :target_author_signature,
                 :sender
 
+  def author
+    sender.person
+  end
+
   def signable_accessors
       accessors = self.class.roxml_attrs.collect do |definition|
         definition.accessor
diff --git a/config/initializers/resque.rb b/config/initializers/resque.rb
index 1a390454b9..f1202f72c1 100644
--- a/config/initializers/resque.rb
+++ b/config/initializers/resque.rb
@@ -16,6 +16,7 @@ if AppConfig.single_process_mode?
         klass.send(:perform, *args)
       rescue Exception => e
         Rails.logger.warn(e.message)
+        raise e
         nil
       end
     end
diff --git a/lib/diaspora/encryptable.rb b/lib/diaspora/encryptable.rb
index 708f03fff0..a950e38f56 100644
--- a/lib/diaspora/encryptable.rb
+++ b/lib/diaspora/encryptable.rb
@@ -50,11 +50,5 @@ module Diaspora
         (self.send accessor.to_sym).to_s
       }.join(';')
     end
-
-    # @abstract
-    # @return [String]
-    #def signable_string
-    #  raise NotImplementedError.new("Implement this in your encryptable class")
-    #end
   end
 end
diff --git a/lib/postzord/dispatcher/private.rb b/lib/postzord/dispatcher/private.rb
index 370c6f5c41..7aff418d2c 100644
--- a/lib/postzord/dispatcher/private.rb
+++ b/lib/postzord/dispatcher/private.rb
@@ -119,7 +119,9 @@ class Postzord::Dispatcher::Private
 
   # @param services [Array<User>]
   def notify_users(users)
-    Resque.enqueue(Job::NotifyLocalUsers, users.map{|u| u.id}, @object.class.to_s, @object.id, @object.author.id)
+    if @object.respond_to?(:persisted?)
+      Resque.enqueue(Job::NotifyLocalUsers, users.map{|u| u.id}, @object.class.to_s, @object.id, @object.author.id)
+    end
   end
 
   # @param services [Array<User>]
-- 
GitLab