PaperclipFTP
Ftp storage support for paperclip file attachment plugin. Useful for CDNs with ftp access method for file uploading.
Install
gem install paperclipftp
Usage
In your model:
class User < ActiveRecord::Base
has_attached_file :avatar,
:styles => { :medium => "300x300>", :thumb => "100x100>" },
:path => "/path-to-images/:attachment/:id/:style/:filename",
:url => "http://my-cdn-domain.com/:attachment/:id/:style/:filename",
:storage => :ftp,
:ftp_credentials => Rails.root.join('config', 'paperclipftp.yaml')
end
or
class User < ActiveRecord::Base
has_attached_file :avatar,
:styles => { :medium => "300x300>", :thumb => "100x100>" },
:path => "/path-to-images/:attachment/:id/:style/:filename",
:url => "http://my-cdn-domain.com/:attachment/:id/:style/:filename",
:storage => :ftp,
:ftp_credentials => { :host => 'ftp.domain.com', :username => 'username', :password => 'password' },
:ftp_passive_mode => false,
:ftp_timeout => 90,
:ftp_verify_size_on_upload => false,
:ftp_debug_mode => false
end
Options storage, ftp_credentials, path and url are mandatory.
-
storage: Should be set to 'ftp' value in order to utilize paperclipftp plugin -
ftp_credentials: Takes a path, a File, or a Hash. The path (or File) must point to a YAML file containing thehost,username, andpasswordto ftp server. You can 'environment-space' this just like you do to your database.yml file, so different environments can use different accounts:development: host: domain.com username: user password: password test: ... production: ...This is not required, however, and the file may simply look like this:
host: domain.com username: user password: passwordIn which case, those values will be used in all environments.
-
path: This is the templated path to the directory on the ftp server in which the file will be stored. -
url: This is the templated url to the files as accessed from CDN.
Other options are optional.
ftp_passive_mode: True if ftp communication should happen in passive modeftp_timeout: Max amount of time in seconds to allocate to ftp operations of the pluginftp_debug_mode: If true, dumps copy of all ftp commands to stderrftp_verify_size_on_upload: If true, file size will be verified after each upload
Copyright
Copyright (c) 2010 Damian Caruso. See LICENSE for details.