module RetinaRails::Strategies::CarrierWave::Uploader::ClassMethods
Public Instance Methods
optimize_retina!(name, options={})
click to toggle source
Optimize version for retina displays
Parameters¶ ↑
- name (Sym)
-
name of the version
# File lib/retina_rails/strategies/carrierwave.rb, line 64 def optimize_retina!(name, options={}) config = versions[name] options[:retina] = false processors = if config.respond_to?(:processors) config.processors.dup else config[:uploader].processors.dup end dimensions_processor = nil ## Check if there's a resize processor to get the dimensions processors.each do |p| dimensions_processor = processors.delete(p) if p[0].to_s.scan(/resize_to_fill|resize_to_limit|resize_to_fit|resize_and_pad/).any? end ## Define a retina version if processor is present if dimensions_processor dimensions = dimensions_processor[1].dup width = dimensions[0] * 2 height = dimensions[1] * 2 2.times { dimensions.delete_at(0) } dimensions.insert(0, height) dimensions.insert(0, width) ## Reset the processors if config.respond_to?(:processors) config.processors = [] else config[:uploader].processors = [] end ## Override version with double height and width version name, options do process dimensions_processor[0] => dimensions quality_processor = nil ## Set other processors processors.each do |processor| process processor[0] => processor[1] quality_processor = true if processor[0] == :retina_quality end ## Set default quality if retina_quality is not defined process :retina_quality => 60 if quality_processor.nil? ## Store dimensions process :store_retina_dimensions end end end
version(name, options={}, &block)
click to toggle source
Adds a new version to this uploader
Parameters¶ ↑
- name (to_sym)
-
name of the version
- options (Hash)
-
optional options hash
- &block (Proc)
-
a block to eval on this version of the uploader
Examples¶ ↑
class MyUploader < CarrierWave::Uploader::Base retina! version :thumb do process :resize_to_fill => [30, 30] process :retina_quality => 25 end version :thumb, :retina => false do process :resize_to_fill => [30, 30] end end
Calls superclass method
# File lib/retina_rails/strategies/carrierwave.rb, line 51 def version(name, options={}, &block) super optimize_retina!(name, { :if => options[:if] }) unless options[:retina] == false end