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

Methods included from Cache

#cache!, #cache_name, #cache_stored_file!, #cached?, #retrieve_from_cache!

Methods included from Callbacks

#with_callbacks

Instance Method Details

#delete_cache_idObject

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.expand_path(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

#filenameObject

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
      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