module RetinaRails::Strategies::Paperclip::Uploader::ClassMethods
Public Instance Methods
has_attached_file(name, options={})
click to toggle source
Define an attachment with its options
Parameters¶ ↑
- name (to_sym)
-
name of the version
- options (Hash)
-
optional options hash
Examples¶ ↑
class Upload retina! has_attached_file :image, :styles => { :original => ["800x800", :jpg], :big => ["125x125#", :jpg] }, :retina => true # Or :retina => { :quality => 25 } # Optional end
Calls superclass method
# File lib/retina_rails/strategies/paperclip.rb, line 51 def has_attached_file(name, options={}) super optimize_retina! name unless options[:retina] == false end
optimize_retina!(name)
click to toggle source
Optimize attachment for retina displays
Parameters¶ ↑
- name (Sym)
-
name of the attachment
# File lib/retina_rails/strategies/paperclip.rb, line 64 def optimize_retina!(name) attachment = attachment_definitions[name] ## Check for style definitions styles = attachment[:styles] retina_options = if attachment[:retina].is_a?(Hash) attachment[:retina] else { :quality => 60 } end ## Get retina quality retina_quality = retina_options[:quality] || 40 if styles retina_styles = {} retina_convert_options = {} convert_options = attachment[:convert_options] ## Iterate over styles and set optimzed dimensions styles.each_pair do |key, value| dimensions = value.kind_of?(Array) ? value[0] : value new_dimensions = dimensions.gsub(/\d+/) { |dimension| dimension.to_i * 2} retina_styles[key.to_sym] = value.kind_of?(Array) ? [new_dimensions, value[1]] : new_dimensions ## Set quality convert option convert_option = convert_options[key] if convert_options convert_option = convert_option ? "#{convert_option} -quality #{retina_quality}" : "-quality #{retina_quality}" retina_convert_options[key.to_sym] = convert_option end ## Override styles with new retina dimensions attachment[:styles].merge!(retina_styles) ## Set quality convert options attachment[:convert_options] = {} if attachment[:convert_options].nil? attachment[:convert_options].merge!(retina_convert_options) ## Set save dimensions processor if attachment[:processors] attachment[:processors] << :save_dimensions attachment[:processors] << :thumbnail else attachment[:processors] = [:thumbnail, :save_dimensions] end end end