Paperclip: processor proc not firing

Hi

It’s extremely rare that I have to post something on the Rails list,
but this is one of those times that I’ve been completely stuck for
countless hours.

Environment: Rails 2.3.3

I’ve implemented a custom processor proc for video thumbnailing with
Paperclip (latest trunk version as git submodule, and yes, it’s
updated) using the instructions posted at
http://thewebfellas.com/blog/2009/2/22/video-thumbnails-with-ffmpeg-and-paperclip
. I’ve updated the interpolations section to reflect the new API, but
that’s completely beside the matter.

When I run my rspec test for video, it fails (images are thumbnailed
correctly, non-video and non-image files are saved without processing,
all as intended):

it “should capture a video frame from video files (mimetyped test)”
do
test_file = ‘./spec/models/files/dirt.mov’
mimetype = ‘video/quicktime’
doc = Document.new(:asset =>
ActionController::TestUploadedFile.new(test_file, mimetype))
lambda {doc.save!}.should_not raise_error
end

I’m mimicking an actual upload to stay as close to the real web
interaction as possible.

It bombs with (making the test fail):

identify: no decode delegate for this image format `/var/folders/uQ/
uQCnby5GHUOu0O+CzWEVmk+++TI/-Tmp-/stream.6150.4’ @ constitute.c/
ReadImage/488.

So for some reason it’s still using ImageMagick to process the
attachment, even though I even explicitely set the “video?” instance
method to always return true (which should make it fail for normal
image files, but even that it doesn’t).

Inspecting the asset brings up the properties I expect to see:

— &id004 !ruby/object:Paperclip::Attachment
_asset_content_type: video/quicktime
_asset_file_name: dirt.mov
_asset_file_size: 2162316
_asset_updated_at: 2009-08-17 15:35:29.113877 +02:00
convert_options: {}

:processors: &id001 !ruby/object:Proc {}

For clarification, my Paperclip method in the model:

has_attached_file :asset,
:styles => { :full => “1920x1080”, :medium =>
[“205x154”, :png], :large => [“450x”,:png] },
:default_style => :full,
:url => “/
uploads/:attachment/:id/:style.:content_type_extension”,
:processors => lambda { |a| a.video? ?
[ :video_thumbnail ] : [ :thumbnail ] }

I’m completely stumped here, the VideoThumbnail class is never called,
even though it’s loaded correctly etc. Been looking and debugging
Paperclip itself, hoping to find something in the plugin, but to no
avail.

The proc does fire though: when I replace a.video? with a.image?, I
can see ffmpeg firing for all images in the tests (failing to process
them quite obviously).

Just to avoid needless tips on ffmpeg not being correctly installed or
anything: I had it working with attachment_fu. The reason I switched
to Paperclip is because I hate monkeypatching a plugin (with an extra
custom plugin) up to a point where you’re basically making all code
ugly and prone to fail as you keep adding extra requirements (it was
already getting up to that point). Paperclip just seemed to provide me
with nice hooks to do what I want in a beautiful way… if it would
work :slight_smile:

Anyone have some genious reason as to why this is happening?

Best regards

Peter De Berdt