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.



167
168
169
170
171
172
173
174
175
176
177
# File 'lib/carrierwave/uploader/versions.rb', line 167

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. When given a query hash as a parameter, will return the url with signature that contains query params Query hash only works with AWS (S3 storage).

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
my_uploader.url(:query => {"response-content-disposition" => "attachment"})
my_uploader.url(:version, :sub_version, :query => {"response-content-disposition" => "attachment"})

Parameters

*args (Symbol)

any number of versions

OR/AND

Hash

query params

Returns

String

the location where this file is accessible via a url



151
152
153
154
155
156
157
158
159
160
161
# File 'lib/carrierwave/uploader/versions.rb', line 151

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

#version_nameObject

Returns

String

the name of this version of the uploader



123
124
125
# File 'lib/carrierwave/uploader/versions.rb', line 123

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



109
110
111
112
113
114
115
116
# File 'lib/carrierwave/uploader/versions.rb', line 109

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