Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ruby on Rails - Paperclip Error

For reference I have been following this tutorial: https://devcenter.heroku.com/articles/paperclip-s3 Except I am in localhost testing right now, so I installed the Figaro gem and placed my S3 info in application.yml.

Using Rails v4, Cocaine v0.5.3, and Paperclip v4.1.0 (unsure if any other gem version numbers need to be mentioned).

I have a model called SubmissionDetails, where in its new.html.erb I am trying to upload a jpg to a column called attachment. Here is the relevant model code:

has_attached_file :attachment, styles: {
thumb: '200x200>',
large: '800x800>'
}

validates_attachment_content_type :attachment, content_type: /\Aimage\/.*\Z/

When I try to upload a jpg, it returns back to the form with the following error message:

1 error prohibited this submission_detail from being saved:
Attachment translation missing:
en.activerecord.errors.models.submission_detail.attributes.attachment.spoofed_media_type

I understand some of the error, that text to display this error message is missing from my en.yml file, but what about that spoofed media type part?

This shows up in my server console, not sure if this is relevant:

[paperclip] Content Type Spoof: Filename header.jpg (["image/jpeg"]), content type discovered from file command: . See documentation to allow this combination.
(0.0ms)  rollback transaction
like image 989
Rachel9494 Avatar asked Feb 20 '14 15:02

Rachel9494


2 Answers

That message is raised by a validation check for content spoofing.

For Paperclip v.4 this generates a bug https://github.com/thoughtbot/paperclip/issues/1429

While for Paperclip v.3, it seems it just throws a deprecation warning, https://github.com/thoughtbot/paperclip/issues/1423

So I'd wait for Paperclip team to solve this bug before using version 4. At the moment I'd rather keep using version 3.

gem "paperclip", "~> 3.5.3"

Or add this to an initializer to disable spoofing protection:

config/initializers/paperclip_media_type_spoof_detector_override.rb

require 'paperclip/media_type_spoof_detector'
module Paperclip
  class MediaTypeSpoofDetector
    def spoofed?
      false
    end
  end
end

see Can't upload image using Paperclip 4.0 Rails 3

like image 150
Mini John Avatar answered Sep 25 '22 13:09

Mini John


As explained recently in the comments of the issue (https://github.com/thoughtbot/paperclip/issues/1429#issuecomment-49821032), adding :

Paperclip.options[:command_path] = '/usr/bin'

to config/initializers/paperclip.rb solved the problem.

like image 22
ZeDalaye Avatar answered Sep 21 '22 13:09

ZeDalaye