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
-
#recreate_versions!(*versions) ⇒ Object
Recreate versions and reprocess them.
-
#url(*args) ⇒ Object
When given a version name as a parameter, will return the url for that version This also works with nested versions.
-
#version_exists?(name) ⇒ Boolean
Parameters.
-
#version_name ⇒ Object
Returns.
-
#versions ⇒ Object
Returns a hash mapping the name of each version of the uploader to an instance of it.
Methods included from Callbacks
Instance Method Details
#recreate_versions!(*versions) ⇒ Object
Recreate versions and reprocess them. This can be used to recreate versions if their parameters somehow have changed.
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
# File 'lib/carrierwave/uploader/versions.rb', line 215 def recreate_versions!(*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 if versions.any? file = sanitized_file if !cached? store_versions!(file, versions) else cache! if !cached? store! end 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
199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/carrierwave/uploader/versions.rb', line 199 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_exists?(name) ⇒ Boolean
Parameters
- name (#to_sym)
-
name of the version
Returns
- Boolean
-
True when the version exists according to its :if condition
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
# File 'lib/carrierwave/uploader/versions.rb', line 158 def version_exists?(name) name = name.to_sym return false unless self.class.versions.has_key?(name) condition = self.class.versions[name][:options][:if] if(condition) if(condition.respond_to?(:call)) condition.call(self, :version => name, :file => file) else send(condition, file) end else true end end |
#version_name ⇒ Object
Returns
- String
-
the name of this version of the uploader
144 145 146 |
# File 'lib/carrierwave/uploader/versions.rb', line 144 def version_name self.class.version_names.join('_').to_sym unless self.class.version_names.blank? end |
#versions ⇒ Object
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
130 131 132 133 134 135 136 137 |
# File 'lib/carrierwave/uploader/versions.rb', line 130 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 |