The default place to store attachments is in the filesystem. Files on the local filesystem can be very easily served by Apache without requiring a hit to your app. They also can be processed more easily after they've been saved, as they're just normal files. There is one Filesystem-specific option for has_attached_file.
path
: The location of the repository of attachments on disk.
This can (and, in almost all cases, should) be coordinated with the value
of the url
option to allow files to be saved into a place
where Apache can serve them without hitting your app. Defaults to
“:rails_root/public/:attachment/:id/:style/:basename.:extension” By default
this places the files in the app's public directory which can be served
directly. If you are using capistrano for deployment, a good idea would be
to make a symlink to the capistrano-created system directory from inside
your app's public directory. See Paperclip::Attachment#interpolate for
more information on variable interpolaton.
:path => "/var/app/attachments/:class/:id/:style/:basename.:extension"
# File lib/paperclip/storage/filesystem.rb, line 19 def self.extended base end
# File lib/paperclip/storage/filesystem.rb, line 71 def copy_to_local_file(style, local_dest_path) FileUtils.cp(path(style), local_dest_path) end
# File lib/paperclip/storage/filesystem.rb, line 22 def exists?(style_name = default_style) if original_filename File.exist?(path(style_name)) else false end end