Module: CarrierWave::Uploader::Store
- Extended by:
- ActiveSupport::Concern
- Includes:
- Cache, Callbacks, Configuration
- Included in:
- Base
- Defined in:
- lib/carrierwave/uploader/store.rb
Instance Method Summary collapse
-
#delete_cache_id ⇒ Object
Deletes a cache id (tmp dir in cache).
-
#filename ⇒ Object
Override this in your Uploader to change the filename.
-
#retrieve_from_store!(identifier) ⇒ Object
Retrieves the file from the storage.
-
#store!(new_file = nil) ⇒ Object
Stores the file by passing it to this Uploader’s storage engine.
-
#store_path(for_file = filename) ⇒ Object
Calculates the path where the file should be stored.
Methods included from Cache
#cache!, #cache_name, #cache_stored_file!, #cached?, #retrieve_from_cache!
Methods included from Callbacks
Instance Method Details
#delete_cache_id ⇒ Object
Deletes a cache id (tmp dir in cache)
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/carrierwave/uploader/store.rb', line 71 def delete_cache_id if @cache_id path = File.(File.join(cache_dir, @cache_id), CarrierWave.root) begin Dir.rmdir(path) rescue Errno::ENOENT # Ignore: path does not exist rescue Errno::ENOTDIR # Ignore: path is not a dir rescue Errno::ENOTEMPTY, Errno::EEXIST # Ignore: dir is not empty rescue SystemCallError # no such directory on JRuby end end end |
#filename ⇒ Object
Override this in your Uploader to change the filename.
Be careful using record ids as filenames. If the filename is stored in the database the record id will be nil when the filename is set. Don’t use record ids unless you understand this limitation.
Do not use the version_name in the filename, as it will prevent versions from being loaded correctly.
Returns
- String
-
a filename
26 27 28 |
# File 'lib/carrierwave/uploader/store.rb', line 26 def filename @filename end |
#retrieve_from_store!(identifier) ⇒ Object
Retrieves the file from the storage.
Parameters
- identifier (String)
-
uniquely identifies the file to retrieve
95 96 97 98 99 |
# File 'lib/carrierwave/uploader/store.rb', line 95 def retrieve_from_store!(identifier) with_callbacks(:retrieve_from_store, identifier) do @file = storage.retrieve!(identifier) end end |
#store!(new_file = nil) ⇒ Object
Stores the file by passing it to this Uploader’s storage engine.
If new_file is omitted, a previously cached file will be stored.
Parameters
- new_file (File, IOString, Tempfile)
-
any kind of file object
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/carrierwave/uploader/store.rb', line 55 def store!(new_file=nil) cache!(new_file) if new_file && ((@cache_id != parent_cache_id) || @cache_id.nil?) if @file and @cache_id with_callbacks(:store, new_file) do new_file = storage.store!(@file) @file.delete if (delete_tmp_file_after_storage && ! move_to_store) delete_cache_id @file = new_file @cache_id = nil end end end |
#store_path(for_file = filename) ⇒ Object
Calculates the path where the file should be stored. If for_file
is given, it will be used as the filename, otherwise CarrierWave::Uploader#filename is assumed.
Parameters
- for_file (String)
-
name of the file <optional>
Returns
- String
-
the store path
42 43 44 |
# File 'lib/carrierwave/uploader/store.rb', line 42 def store_path(for_file=filename) File.join([store_dir, full_filename(for_file)].compact) end |