From 71b58fa6fc79f03b90503c90c09373f9d43db461 Mon Sep 17 00:00:00 2001
From: Maxwell Salzberg <maxwell@joindiaspora.com>
Date: Wed, 4 Jan 2012 00:08:29 -0800
Subject: [PATCH] only queue process_photo jobs if the owner is local. this
 should cut down on some resque errors

---
 app/models/photo.rb                    | 4 +++-
 spec/factories.rb                      | 8 ++++++++
 spec/models/jobs/process_photo_spec.rb | 9 +++++++++
 3 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/app/models/photo.rb b/app/models/photo.rb
index 904d884f76..759e12924e 100644
--- a/app/models/photo.rb
+++ b/app/models/photo.rb
@@ -25,7 +25,9 @@ class Photo < ActiveRecord::Base
   before_destroy :ensure_user_picture
   after_destroy :clear_empty_status_message
 
-  after_create :queue_processing_job
+  after_create do
+    queue_processing_job if self.author.local?
+  end
 
   after_save do
     self.status_message.update_photos_counter if status_message
diff --git a/spec/factories.rb b/spec/factories.rb
index 69a5636151..284d1e67a6 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -106,6 +106,14 @@ Factory.define(:photo) do |p|
   end
 end
 
+Factory.define(:remote_photo, :parent => :photo) do |p|
+  p.remote_photo_path 'https://photo.com/images/'
+  p.remote_photo_name 'kittehs.jpg'
+  p.association :author,:factory => :person
+  p.processed_image nil
+  p.unprocessed_image nil
+end
+
 Factory.define :reshare do |r|
   r.association(:root, :public => true, :factory => :status_message)
   r.association(:author, :factory => :person)
diff --git a/spec/models/jobs/process_photo_spec.rb b/spec/models/jobs/process_photo_spec.rb
index bda3ed678a..3f10397451 100644
--- a/spec/models/jobs/process_photo_spec.rb
+++ b/spec/models/jobs/process_photo_spec.rb
@@ -54,4 +54,13 @@ describe Jobs::ProcessPhoto do
       result.should be false
     end
   end
+
+  it 'does not throw an error if it is called on a remote photo' do
+    p = Factory(:remote_photo)
+    p.unprocessed_image = nil
+    expect{
+      result = Jobs::ProcessPhoto.perform(p.id)
+    }.to_not raise_error
+    
+  end
 end
-- 
GitLab