Sha256: 62effe401319396016831c24974315840ad1cb13c1460d5e3b91e10bae91e696

Contents?: true

Size: 1.22 KB

Versions: 17

Compression:

Stored size: 1.22 KB

Contents

module Symphonia
  class Image < Attachment

    class_attribute :paperclip_options

    def self.image_styles
      Symphonia.config[:paperclip_styles] || {
        tiny_thumb: '120x120>', thumb: '200x200>', medium: '400x300>', large: '800x600>', original: '1280x800>'
      }
    end

    has_attached_file(:attachment, {
      styles: image_styles,
      url: :paperclip_attachment_url,
      convert_options: {
        thumb: '-strip -quality 75',
        tiny_thumb: '-strip -quality 75',
        large: '-strip -quality 90'
      }
    })

    before_post_process :transliterate_file_name

    validates_attachment :attachment, presence: true, content_type: {
      content_type: %w(image/jpeg image/jpg image/JPG image/png image/gif)}, size: {in: 0..5.megabytes}


    def url(variant = :original)
      attachment.url(variant)
    end

    private

    def paperclip_attachment_url
      paperclip_options.try(:[], :url) || Paperclip::Attachment.default_options[:url]
    end

    def transliterate_file_name
      extension = File.extname(attachment_file_name).remove('.')
      filename = File.basename(attachment_file_name, '.*')
      self.attachment.instance_write(:file_name, "#{filename.parameterize}.#{extension}")
    end

  end

end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
symphonia-3.2.4 app/models/symphonia/image.rb
symphonia-3.2.3 app/models/symphonia/image.rb
symphonia-3.2.2 app/models/symphonia/image.rb
symphonia-3.2.1 app/models/symphonia/image.rb
symphonia-3.1.5 app/models/symphonia/image.rb
symphonia-3.1.4 app/models/symphonia/image.rb
symphonia-3.1.3 app/models/symphonia/image.rb
symphonia-3.1.2 app/models/symphonia/image.rb
symphonia-3.1.1 app/models/symphonia/image.rb
symphonia-3.1.0 app/models/symphonia/image.rb
symphonia-3.0.3 app/models/symphonia/image.rb
symphonia-3.0.2 app/models/symphonia/image.rb
symphonia-2.2.1 app/models/symphonia/image.rb
symphonia-3.0.1 app/models/symphonia/image.rb
symphonia-3.0.0 app/models/symphonia/image.rb
symphonia-2.1.8 app/models/symphonia/image.rb
symphonia-2.1.7 app/models/symphonia/image.rb