README.rdoc

DataMapper Paperclip

DM-Paperclip is a port of Thoughtbot's Paperclip plugin to work with
DataMapper. This plugin is fully compatible with the original
ActiveRecord-oriented Paperclip. You could take an existing ActiveRecord
database and use it with DataMapper. The module also includes updates
validation handling and automatic including of the necessary
'property' fields into your model.

To use it within your models, you need to ensure the three database fields
are included. They are {name}_file_name, {name}_content_type, and
{name}_file_size. The first two are strings, the final _file_size column
is an integer. So if your user model has an avatar field, then you would
add avatar_file_name, avatar_content_type, and avatar_file_size.

As with the original Paperclip plugin, it allows processing of thumbnails
at the time the record is saved though ImageMagick. It processes the
thumbnails through the command-line applications instead of using RMagick.

See the documentation for the has_attached_file method for
options.

Code

The code DM-Paperclip is available at Github:

git clone git://github.com/krobertson/dm-paperclip.git

It is regularly updated to keep in sync with the latest from Thoughtbot.

Releases are tagged within the repository and versioned the same as the
original model. You can also get the latest release packaged as a gem
through Rubyforge:

You will need to add an initializer to configure Paperclip. If on Rails,
can add a config/initializers/paperclip.rb, on Merb can use config/init.rb
and add it to the Merb::BootLoader.after_app_loads section. Can also use
environment configs, rackup file, Rake task, wherever.

Your database will need to add four columns, avatar_file_name (varchar),
avatar_content_type (varchar), and avatar_file_size (integer), and
avatar_updated_at (datetime). You can either add these manually, auto-
migrate, or use the following migration:

migration( 1, :add_user_paperclip_fields ) do
up do
modify_table :users do
add_column :avatar_file_name, "varchar(255)"
add_column :avatar_content_type, "varchar(255)"
add_column :avatar_file_size, "integer"
add_column :avatar_updated_at, "datetime"
end
end
down do
modify_table :users do
drop_columns :avatar_file_name, :avatar_content_type, :avatar_file_size, :avatar_updated_at
end
end
end

In order to use validations, you must have loaded the
'dm-validations' gem into your app (available as a part of
dm-more). If the gem isn't loaded before DM-Paperclip is loaded, the
validation methods will be excluded. You will also need to include
DataMapper::Validate into your mode: