paperclip processors and after_post_process

2009 November 23
by robertor

A few things to note when trying to process an uploaded file with paperclip:

  • The only way a post-processor will run is if a style is defined
class MyModel < ActiveRecord::Base
  has_attached_file :mp3,
                    :url => '/:class/:id/:style.:extension',
                    :path => ':rails_root/assets/:class/:id_partition/:style.:extension',
                    :whiny => true,
                    :styles => { :text => { :do_something => true } },
                    :processors => [:my_processor]

  # ...
end
  • To access the file after processing but before paperclip is finished, use the :after_process callback — model instance attributes can be modified and will be saved automatically as part of the paperclip process
class MyModel < ActiveRecord::Base
  # ...
  after_post_process :do_one_more_thing
  # ...

  private
    def do_one_more_thing
      logger.info "MyModel [paperclip] after_post_process"
      logger.info "MyModel [paperclip] file #{mp3.queued_for_write[:original].path}"
      # Do more with the file
      # Make model attribute changes as needed
      # self.my_attribute = "x"
    end
end
No comments yet

Leave a Reply

Note: You can use basic XHTML in your comments. Your email address will never be published.

Subscribe to this comment feed via RSS