Module: CarrierWave::Uploader::Cache

Defined in:
lib/carrierwave/uploader/cache.rb

Instance Method Summary collapse

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



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/carrierwave/uploader/cache.rb', line 54

def cache!(new_file)
  new_file = CarrierWave::SanitizedFile.new(new_file)
  raise CarrierWave::FormNotMultipart if new_file.is_path?

  unless new_file.empty?
    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

      if CarrierWave.config[:cache_to_cache_dir]
        @file = new_file.copy_to(cache_path, CarrierWave.config[:permissions])
      else
        @file = new_file
      end
    end
  end
end

#cache_dirObject

Override this in your Uploader to change the directory where files are cached.

Returns

String

a directory



28
29
30
# File 'lib/carrierwave/uploader/cache.rb', line 28

def cache_dir
  CarrierWave.config[:cache_dir]
end

#cache_nameObject

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



39
40
41
# File 'lib/carrierwave/uploader/cache.rb', line 39

def cache_name
  File.join(cache_id, full_original_filename) if cache_id and original_filename
end

#cached?Boolean

Returns true if the uploader has been cached

Returns

Bool

whether the current file is cached

Returns:

  • (Boolean)


17
18
19
# File 'lib/carrierwave/uploader/cache.rb', line 17

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.



85
86
87
88
89
90
91
# File 'lib/carrierwave/uploader/cache.rb', line 85

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
    @file = CarrierWave::SanitizedFile.new(cache_path)
  end
end