Module: CarrierWave::Uploader::Versions

Extended by:
ActiveSupport::Concern
Includes:
Callbacks
Included in:
Base
Defined in:
lib/carrierwave/uploader/versions.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Methods included from Callbacks

#with_callbacks

Instance Method Details

#recreate_versions!Object

Recreate versions and reprocess them. This can be used to recreate versions if their parameters somehow have changed.



172
173
174
175
176
177
178
179
180
181
182
# File 'lib/carrierwave/uploader/versions.rb', line 172

def recreate_versions!
  # Some files could possibly not be stored on the local disk. This
  # doesn't play nicely with processing. Make sure that we're only
  # processing a cached file
  #
  # The call to store! will trigger the necessary callbacks to both
  # process this version and all sub-versions
  cache_stored_file! if !cached?

  store!
end

#url(*args) ⇒ Object

When given a version name as a parameter, will return the url for that version This also works with nested versions.

Example

my_uploader.url                 # => /path/to/my/uploader.gif
my_uploader.url(:thumb)         # => /path/to/my/thumb_uploader.gif
my_uploader.url(:thumb, :small) # => /path/to/my/thumb_small_uploader.gif

Parameters

*args (Symbol)

any number of versions

Returns

String

the location where this file is accessible via a url



158
159
160
161
162
163
164
165
166
# File 'lib/carrierwave/uploader/versions.rb', line 158

def url(*args)
  if(args.first)
    raise ArgumentError, "Version #{args.first} doesn't exist!" if versions[args.first.to_sym].nil?
    # recursively proxy to version
    versions[args.first.to_sym].url(*args[1..-1])
  else
    super()
  end
end

#version_nameObject

Returns

String

the name of this version of the uploader



136
137
138
# File 'lib/carrierwave/uploader/versions.rb', line 136

def version_name
  self.class.version_names.join('_').to_sym unless self.class.version_names.blank?
end

#versionsObject

Returns a hash mapping the name of each version of the uploader to an instance of it

Returns

Hash=> CarrierWave::Uploader

a list of uploader instances



122
123
124
125
126
127
128
129
# File 'lib/carrierwave/uploader/versions.rb', line 122

def versions
  return @versions if @versions
  @versions = {}
  self.class.versions.each do |name, version|
    @versions[name] = version[:uploader].new(model, mounted_as)
  end
  @versions
end