Module: CarrierWave::Uploader::Versions

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

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#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



101
102
103
104
105
106
107
108
109
# File 'lib/carrierwave/uploader/versions.rb', line 101

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



79
80
81
# File 'lib/carrierwave/uploader/versions.rb', line 79

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



65
66
67
68
69
70
71
72
# File 'lib/carrierwave/uploader/versions.rb', line 65

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