Module: CarrierWave::Uploader::Cache
- Extended by:
- ActiveSupport::Concern
- Includes:
- Callbacks, Configuration
- Defined in:
- lib/carrierwave/uploader/cache.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#cache!(new_file) ⇒ Object
Caches the given file.
-
#cache_name ⇒ Object
Returns a String which uniquely identifies the currently cached file for later retrieval.
-
#cache_stored_file! ⇒ Object
Caches the remotely stored file.
-
#cached? ⇒ Boolean
Returns true if the uploader has been cached.
-
#retrieve_from_cache!(cache_name) ⇒ Object
Retrieves the file with the given cache_name from the cache.
Methods included from Callbacks
Instance Method Details
#cache!(new_file) ⇒ Object
Caches the given file. Calls process! to trigger any process callbacks.
Parameters
- new_file (File, IOString, Tempfile)
-
any kind of file object
Raises
- CarrierWave::FormNotMultipart
-
if the assigned parameter is a string
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/carrierwave/uploader/cache.rb', line 101 def cache!(new_file) new_file = CarrierWave::SanitizedFile.new(new_file) unless new_file.empty? raise CarrierWave::FormNotMultipart if new_file.is_path? && ensure_multipart_form with_callbacks(:cache, new_file) do self.cache_id = CarrierWave.generate_cache_id unless cache_id @filename = new_file.filename self.original_filename = new_file.filename @file = new_file.copy_to(cache_path, ) end end end |
#cache_name ⇒ Object
Returns a String which uniquely identifies the currently cached file for later retrieval
Returns
- String
-
a cache name, in the format YYYYMMDD-HHMM-PID-RND/filename.txt
86 87 88 |
# File 'lib/carrierwave/uploader/cache.rb', line 86 def cache_name File.join(cache_id, full_original_filename) if cache_id and original_filename end |
#cache_stored_file! ⇒ Object
Caches the remotely stored file
This is useful when about to process images. Most processing solutions require the file to be stored on the local filesystem.
72 73 74 75 76 77 |
# File 'lib/carrierwave/uploader/cache.rb', line 72 def cache_stored_file! sanitized = SanitizedFile.new :tempfile => StringIO.new(file.read), :filename => File.basename(path), :content_type => file.content_type cache! sanitized end |
#cached? ⇒ Boolean
Returns true if the uploader has been cached
Returns
- Bool
-
whether the current file is cached
62 63 64 |
# File 'lib/carrierwave/uploader/cache.rb', line 62 def cached? @cache_id end |
#retrieve_from_cache!(cache_name) ⇒ Object
Retrieves the file with the given cache_name from the cache.
Parameters
- cache_name (String)
-
uniquely identifies a cache file
Raises
- CarrierWave::InvalidParameter
-
if the cache_name is incorrectly formatted.
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/carrierwave/uploader/cache.rb', line 129 def retrieve_from_cache!(cache_name) with_callbacks(:retrieve_from_cache, cache_name) do self.cache_id, self.original_filename = cache_name.to_s.split('/', 2) @filename = original_filename if File.exist?(cache_path) && defined?(MIME::Types) @file = SanitizedFile.new( :tempfile => cache_path, :filename => @filename, :content_type => MIME::Types.of(File.basename(cache_path))[0].content_type ) else @file = CarrierWave::SanitizedFile.new(cache_path) end end end |