paperclip_database_storage

Adds support for storing a paperclip attachment file contents in a database table.

Requirements

paperclip_database_storage requires Paperclip version >= 3.2.0.

Installation

paperclip_database_storage is distributed as a gem, and that is how it should be used in your app.

Include the gem in your Gemfile, from rubygems:

  gem 'paperclip_database_storage', '>= 3.2.0'

Or, get the master branch from the repository:

  gem 'paperclip_database_storage', :git => 'git://github.com/gokuu/paperclip_database_storage.git'

Usage

All you need to do is, when defining a Paperclip attachment, set its :storage option as :database:

class MyModel < ActiveRecord::Base
  has_attached_file :attachment, 
    :storage => :database, 
    :styles => {
      :medium => "300x300>",
      :thumb => "100x100>"
    }, 
    :url => "/:class/:attachment/:id/:style/:basename.:extension"
end

Remarks

The migration defined by paperclip_database_storage contains several indexes, as every possible combination of the fields that can identify a single attachment. This should help getting an attachment as quickly as possible using any combination of parameters

Limitations

  • Paperclip-database currently only supports one database attachment per model.
  • Although you can define a custom :url option for getting the attachment, make sure you define one that uniquelly identifies each attachment, otherwise the plugin will raise an Exception.

TO-DO

  • Add tests!
  • Add support for more than one database attachment per model
  • Enable defining a separate table for each different attachment

Copyright (c) 2012 Pedro Rodrigues, released under the MIT license