Serve up paperclip attachments in a cache friendly way
This commit is contained in:
parent
a6c36b9133
commit
f2150a94cf
7 changed files with 27 additions and 14 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,4 +1,5 @@
|
|||
log
|
||||
public/assets
|
||||
public/attachments
|
||||
tmp
|
||||
.DS_Store
|
||||
|
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 917 B After Width: | Height: | Size: 917 B |
|
@ -106,21 +106,13 @@ module ApplicationHelper
|
|||
def user_image(user, options = {})
|
||||
options[:class] ||= "user_image"
|
||||
|
||||
if user.image.file?
|
||||
image_tag user.image.url, options
|
||||
else
|
||||
image_tag "anon_large.png", options
|
||||
end
|
||||
image_tag user.image.url(:large), options
|
||||
end
|
||||
|
||||
def user_thumbnail(user, options = {})
|
||||
options[:class] ||= "user_thumbnail"
|
||||
|
||||
if user.image.file?
|
||||
image_tag user.image.url, options
|
||||
else
|
||||
image_tag "anon_small.png", options
|
||||
end
|
||||
image_tag user.image.url(:small), options
|
||||
end
|
||||
|
||||
def preferred_editor
|
||||
|
|
|
@ -44,9 +44,9 @@ class User < ActiveRecord::Base
|
|||
after_initialize :set_creation_time
|
||||
before_save :encrypt_password
|
||||
|
||||
has_attached_file :image, :styles => { :thumb => "100x100>" },
|
||||
:path => "#{ATTACHMENTS_DIR}/user/image/:id/:filename",
|
||||
:url => "/user/image/:id/:filename"
|
||||
has_attached_file :image,
|
||||
:default_url => "/assets/:class/:attachment/:style.png",
|
||||
:styles => { :large => "100x100>", :small => "50x50>" }
|
||||
|
||||
def self.authenticate(options)
|
||||
if options[:username] and options[:password]
|
||||
|
|
|
@ -56,7 +56,7 @@ defaults: &defaults
|
|||
gpx_trace_dir: "/home/osm/traces"
|
||||
gpx_image_dir: "/home/osm/images"
|
||||
# Location of data for attachments
|
||||
attachments_dir: ":rails_root/public"
|
||||
attachments_dir: ":rails_root/public/attachments"
|
||||
# Log file to use
|
||||
#log_path: ""
|
||||
# List of memcache servers to use for caching
|
||||
|
|
20
config/initializers/paperclip.rb
Normal file
20
config/initializers/paperclip.rb
Normal file
|
@ -0,0 +1,20 @@
|
|||
module Paperclip
|
||||
class AssetUrlGenerator < UrlGenerator
|
||||
include Sprockets::Helpers::IsolatedHelper
|
||||
include Sprockets::Helpers::RailsHelper
|
||||
|
||||
def for(style_name, options)
|
||||
url = super(style_name, options)
|
||||
|
||||
if url =~ /^\/assets\/(.*)$/
|
||||
asset_path($1)
|
||||
else
|
||||
url
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Paperclip::Attachment.default_options[:url] = "/attachments/:class/:attachment/:id_partition/:style/:fingerprint.:extension"
|
||||
Paperclip::Attachment.default_options[:path] = "#{ATTACHMENTS_DIR}/:class/:attachment/:id_partition/:style/:fingerprint.:extension"
|
||||
Paperclip::Attachment.default_options[:url_generator] = Paperclip::AssetUrlGenerator
|
Loading…
Add table
Add a link
Reference in a new issue