Commit 7cef0058

mo khan <mo@mokhan.ca>
2013-12-30 01:57:15
add image_processing column to photo model to tell if an image has been processed in the background and use store_in_background to speed up upload.
1 parent 9ca061a
app/models/photo.rb
@@ -2,31 +2,26 @@ class Photo < ActiveRecord::Base
   belongs_to :creation, :counter_cache => true
   validates :image,  :presence => true
   mount_uploader :image, PhotoUploader
-  process_in_background :image
-  #store_in_background :image
+  #process_in_background :image
+  store_in_background :image
 
-  include Rails.application.routes.url_helpers
   def to_jq_upload
-    if image.thumb.url && image.thumb.url != image.thumb.default_url
-      {
-        :name => read_attribute(:image),
-        :url => image.url,
-        :thumbnail_url => image.thumb.url,
-        :delete_url => id,
-        :delete_type => "DELETE"
-      }
-    else
-      {
-        :name => read_attribute(:image),
-        :url => image.url,
-        :thumbnail_url => image.url,
-        :delete_url => id,
-        :delete_type => "DELETE"
-      }
-    end
+    {
+      :name => read_attribute(:image),
+      :url => image.url,
+      :thumbnail_url => is_processed? ? image.thumb.url : image.url,
+      :delete_url => id,
+      :delete_type => "DELETE"
+    }
   end
 
   def watermark
     creation.watermark
   end
+
+  private
+
+  def is_processed?
+    self.image_processing
+  end
 end
db/migrate/20131230013944_add_image_processing_to_photos.rb
@@ -0,0 +1,5 @@
+class AddImageProcessingToPhotos < ActiveRecord::Migration
+  def change
+    add_column :photos, :image_processing, :boolean
+  end
+end
db/schema.rb
@@ -11,33 +11,19 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 20131228172412) do
-
-  create_table "activities", force: true do |t|
-    t.integer  "trackable_id"
-    t.string   "trackable_type"
-    t.integer  "owner_id"
-    t.string   "owner_type"
-    t.string   "key"
-    t.text     "parameters"
-    t.integer  "recipient_id"
-    t.string   "recipient_type"
-    t.datetime "created_at"
-    t.datetime "updated_at"
-  end
+ActiveRecord::Schema.define(version: 20131230013944) do
 
-  add_index "activities", ["owner_id", "owner_type"], name: "index_activities_on_owner_id_and_owner_type"
-  add_index "activities", ["recipient_id", "recipient_type"], name: "index_activities_on_recipient_id_and_recipient_type"
-  add_index "activities", ["trackable_id", "trackable_type"], name: "index_activities_on_trackable_id_and_trackable_type"
+  # These are extensions that must be enabled in order to support this database
+  enable_extension "plpgsql"
 
   create_table "avatars", force: true do |t|
     t.integer  "user_id"
-    t.datetime "created_at"
-    t.datetime "updated_at"
+    t.datetime "created_at", null: false
+    t.datetime "updated_at", null: false
     t.string   "avatar"
   end
 
-  add_index "avatars", ["user_id"], name: "index_avatars_on_user_id"
+  add_index "avatars", ["user_id"], name: "index_avatars_on_user_id", using: :btree
 
   create_table "categories", force: true do |t|
     t.string   "name"
@@ -59,16 +45,16 @@ ActiveRecord::Schema.define(version: 20131228172412) do
     t.integer  "favorites_count", default: 0
   end
 
-  add_index "creations", ["created_at"], name: "index_creations_on_created_at"
-  add_index "creations", ["user_id"], name: "index_creations_on_user_id"
+  add_index "creations", ["created_at"], name: "index_creations_on_created_at", using: :btree
+  add_index "creations", ["user_id"], name: "index_creations_on_user_id", using: :btree
 
   create_table "creations_categories", id: false, force: true do |t|
     t.integer "creation_id"
     t.integer "category_id"
   end
 
-  add_index "creations_categories", ["category_id", "creation_id"], name: "index_creations_categories_on_category_id_and_creation_id"
-  add_index "creations_categories", ["creation_id", "category_id"], name: "index_creations_categories_on_creation_id_and_category_id"
+  add_index "creations_categories", ["category_id", "creation_id"], name: "index_creations_categories_on_category_id_and_creation_id", using: :btree
+  add_index "creations_categories", ["creation_id", "category_id"], name: "index_creations_categories_on_creation_id_and_category_id", using: :btree
 
   create_table "delayed_jobs", force: true do |t|
     t.integer  "priority",   default: 0
@@ -80,11 +66,11 @@ ActiveRecord::Schema.define(version: 20131228172412) do
     t.datetime "failed_at"
     t.string   "locked_by"
     t.string   "queue"
-    t.datetime "created_at"
-    t.datetime "updated_at"
+    t.datetime "created_at",             null: false
+    t.datetime "updated_at",             null: false
   end
 
-  add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority"
+  add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority", using: :btree
 
   create_table "favorites", force: true do |t|
     t.integer  "user_id"
@@ -93,13 +79,13 @@ ActiveRecord::Schema.define(version: 20131228172412) do
     t.datetime "updated_at"
   end
 
-  add_index "favorites", ["creation_id"], name: "index_favorites_on_creation_id"
-  add_index "favorites", ["user_id"], name: "index_favorites_on_user_id"
+  add_index "favorites", ["creation_id"], name: "index_favorites_on_creation_id", using: :btree
+  add_index "favorites", ["user_id"], name: "index_favorites_on_user_id", using: :btree
 
   create_table "interests", force: true do |t|
     t.string   "name"
-    t.datetime "created_at"
-    t.datetime "updated_at"
+    t.datetime "created_at", null: false
+    t.datetime "updated_at", null: false
   end
 
   create_table "photos", force: true do |t|
@@ -108,9 +94,10 @@ ActiveRecord::Schema.define(version: 20131228172412) do
     t.datetime "created_at"
     t.datetime "updated_at"
     t.string   "image_tmp"
+    t.boolean  "image_processing"
   end
 
-  add_index "photos", ["creation_id"], name: "index_photos_on_creation_id"
+  add_index "photos", ["creation_id"], name: "index_photos_on_creation_id", using: :btree
 
   create_table "taggings", force: true do |t|
     t.integer  "tag_id"
@@ -122,11 +109,11 @@ ActiveRecord::Schema.define(version: 20131228172412) do
     t.datetime "created_at"
   end
 
-  add_index "taggings", ["tag_id"], name: "index_taggings_on_tag_id"
-  add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context"
-  add_index "taggings", ["taggable_type"], name: "index_taggings_on_taggable_type"
-  add_index "taggings", ["tagger_id"], name: "index_taggings_on_tagger_id"
-  add_index "taggings", ["tagger_type"], name: "index_taggings_on_tagger_type"
+  add_index "taggings", ["tag_id"], name: "index_taggings_on_tag_id", using: :btree
+  add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context", using: :btree
+  add_index "taggings", ["taggable_type"], name: "index_taggings_on_taggable_type", using: :btree
+  add_index "taggings", ["tagger_id"], name: "index_taggings_on_tagger_id", using: :btree
+  add_index "taggings", ["tagger_type"], name: "index_taggings_on_tagger_type", using: :btree
 
   create_table "tags", force: true do |t|
     t.string "name"
@@ -137,22 +124,22 @@ ActiveRecord::Schema.define(version: 20131228172412) do
     t.text     "description"
     t.string   "url"
     t.integer  "user_id"
-    t.datetime "created_at"
-    t.datetime "updated_at"
+    t.datetime "created_at",  null: false
+    t.datetime "updated_at",  null: false
     t.string   "image_url"
     t.string   "author"
     t.string   "author_url"
   end
 
-  add_index "tutorials", ["user_id"], name: "index_tutorials_on_user_id"
+  add_index "tutorials", ["user_id"], name: "index_tutorials_on_user_id", using: :btree
 
   create_table "users", force: true do |t|
-    t.string   "email",                  default: "", null: false
-    t.string   "encrypted_password",     default: "", null: false
+    t.string   "email",                              default: "", null: false
+    t.string   "encrypted_password",     limit: 128, default: "", null: false
     t.string   "reset_password_token"
     t.datetime "reset_password_sent_at"
     t.datetime "remember_created_at"
-    t.integer  "sign_in_count",          default: 0
+    t.integer  "sign_in_count",                      default: 0
     t.datetime "current_sign_in_at"
     t.datetime "last_sign_in_at"
     t.string   "current_sign_in_ip"
@@ -171,27 +158,27 @@ ActiveRecord::Schema.define(version: 20131228172412) do
     t.datetime "confirmed_at"
     t.datetime "confirmation_sent_at"
     t.string   "unconfirmed_email"
-    t.integer  "failed_attempts",        default: 0
+    t.integer  "failed_attempts",                    default: 0
     t.string   "unlock_token"
     t.datetime "locked_at"
     t.string   "authentication_token"
     t.string   "invitation_token"
     t.string   "full_address"
-    t.integer  "creations_count",        default: 0
+    t.integer  "creations_count",                    default: 0
   end
 
-  add_index "users", ["authentication_token"], name: "index_users_on_authentication_token", unique: true
-  add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
-  add_index "users", ["created_at"], name: "index_users_on_created_at"
-  add_index "users", ["email"], name: "index_users_on_email", unique: true
-  add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
-  add_index "users", ["unlock_token"], name: "index_users_on_unlock_token", unique: true
+  add_index "users", ["authentication_token"], name: "index_users_on_authentication_token", unique: true, using: :btree
+  add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree
+  add_index "users", ["created_at"], name: "index_users_on_created_at", using: :btree
+  add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
+  add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
+  add_index "users", ["unlock_token"], name: "index_users_on_unlock_token", unique: true, using: :btree
 
   create_table "users_interests", id: false, force: true do |t|
     t.integer "user_id"
     t.integer "interest_id"
   end
 
-  add_index "users_interests", ["interest_id", "user_id"], name: "index_users_interests_on_interest_id_and_user_id"
+  add_index "users_interests", ["interest_id", "user_id"], name: "index_users_interests_on_interest_id_and_user_id", using: :btree
 
 end