Add media dimensions (#2448)

* Fixes #1985

- add migration AddMediaAttachmentMeta, which add meta field to media_attachments
- before saving attachment, set file meta if needed
- add meta in api

* add spec

* align the “size” format for image and video

* fix code climate

* fixes media_attachment_spec.rb
This commit is contained in:
Francis Chong
2017-04-26 09:48:12 +08:00
committed by Eugen Rochko
parent 8fe36654ef
commit 193dddb433
5 changed files with 60 additions and 2 deletions

View File

@ -51,6 +51,7 @@ class MediaAttachment < ApplicationRecord
before_create :set_shortcode
before_post_process :set_type_and_extension
before_save :set_meta
class << self
private
@ -112,6 +113,30 @@ class MediaAttachment < ApplicationRecord
file.instance_write :file_name, [basename, extension].delete_if(&:empty?).join('.')
end
def set_meta
meta = populate_meta
return if meta == {}
file.instance_write :meta, meta
end
def populate_meta
meta = {}
file.queued_for_write.each do |style, file|
begin
geo = Paperclip::Geometry.from_file file
meta[style] = {
width: geo.width.to_i,
height: geo.height.to_i,
size: "#{geo.width.to_i}x#{geo.height.to_i}",
aspect: geo.width.to_f / geo.height.to_f,
}
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
meta[style] = {}
end
end
meta
end
def appropriate_extension
mime_type = MIME::Types[file.content_type]