carrierwave
https://github.com/carrierwaveuploader/carrierwave
Ruby
Classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks
CarrierWave::Mount#mount_uploader
Mounts the given uploader on the given column. This means that assigning
and reading from the column will upload and retrieve files. Supposing
that a User class has an uploader mounted on image, you can assign and
retrieve files like this:
@user.image # => <Uploader>
@user.image.store!(some_file_object)
@user.image.url # => '/some_url.png'
It is also possible (but not recommended) to omit the uploader, which
will create an anonymous uploader class.
Passing a block makes it possible to customize the uploader. This can be
convenient for brevity, but if there is any significant logic in the
uploader, you should do the right thing and have it in its own file.
=== Added instance methods
Supposing a class has used +mount_uploader+ to mount an uploader on a column
named +image+, in that case the following methods will be added to the class:
[image] Returns an instance of the uploader only if anything has been uploaded
[image=] Caches the given file
[image_url] Returns the url to the uploaded file
[image_cache] Returns a string that identifies the cache location of the file
[image_cache=] Retrieves the file from the cache based on the given cache name
[remote_image_url] Returns previously cached remote url
[remote_image_url=] Retrieve the file from the remote url
[remove_image] An attribute reader that can be used with a checkbox to mark a file for removal
[remove_image=] An attribute writer that can be used with a checkbox to mark a file for removal
[remove_image?] Whether the file should be removed when store_image! is called.
[store_image!] Stores a file that has been assigned with +image=+
[remove_image!] Removes the uploaded file from the filesystem.
[image_integrity_error] Returns an error object if the last file to be assigned caused an integrity error
[image_processing_error] Returns an error object if the last file to be assigned caused a processing error
[image_download_error] Returns an error object if the last file to be remotely assigned caused a download error
[image_identifier] Reads out the identifier of the file
=== Parameters
[column (Symbol)] the attribute to mount this uploader on
[uploader (CarrierWave::Uploader)] the uploader class to mount
[options (Hash{Symbol => Object})] a set of options
[&block (Proc)] customize anonymous uploaders
=== Options
[:mount_on => Symbol] if the name of the column to be serialized to differs you can override it using this option
[:ignore_integrity_errors => Boolean] if set to true, integrity errors will result in caching failing silently
[:ignore_processing_errors => Boolean] if set to true, processing errors will result in caching failing silently
=== Examples
Mounting uploaders on different columns.
class Song
mount_uploader :lyrics, LyricsUploader
mount_uploader :alternative_lyrics, LyricsUploader
mount_uploader :file, SongUploader
end
This will add an anonymous uploader with only the default settings:
class Data
mount_uploader :csv
end
this will add an anonymous uploader overriding the store_dir:
class Product
mount_uploader :blueprint do
def store_dir
'blueprints'
end
end
endEdit
git clone [email protected]:carrierwaveuploader/carrierwave.git
cd carrierwave
open lib/carrierwave/mount.rb
Contribute
# Make a new branchgit checkout -b -your-name--update-docs-CarrierWave--Mount-mount_uploader-for-pr
# Commit to gitgit add lib/carrierwave/mount.rbgit commit -m "better docs for CarrierWave::Mount#mount_uploader"
# Open pull requestgem install hub # on a mac you can `brew install hub`
hub fork
git push <your name> -your-name--update-docs-CarrierWave--Mount-mount_uploader-for-pr
hub pull-request
# Celebrate!