This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
commit aa4f8e927d495e9bd177ab6c844ab4bb5e9ad589
tree 9e71ecb01d142e54fee09d4e4a58603e11a33f5c
parent b3f068bfea74bdd893a3164de09614a933d4edf5
tree 9e71ecb01d142e54fee09d4e4a58603e11a33f5c
parent b3f068bfea74bdd893a3164de09614a933d4edf5
| name | age | message | |
|---|---|---|---|
| |
.gitignore | Wed May 14 23:31:01 -0700 2008 | [krobertson] |
| |
LICENSE | Wed May 14 23:31:01 -0700 2008 | [krobertson] |
| |
README.rdoc | Sun Sep 28 16:12:54 -0700 2008 | [krobertson] |
| |
Rakefile | Sun Sep 28 16:12:54 -0700 2008 | [krobertson] |
| |
init.rb | Thu May 15 22:11:20 -0700 2008 | [krobertson] |
| |
lib/ | Mon Sep 29 09:21:25 -0700 2008 | [pk] |
| |
tasks/ | Wed May 14 23:51:28 -0700 2008 | [krobertson] |
| |
test/ | Tue Sep 30 21:49:07 -0700 2008 | [krobertson] |
README.rdoc
=DataMapper Paperclip
DM-Paperclip is a port of Thoughtbot's Paperclip plugin to work with DataMapper 0.9. 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:
sudo gem install dm-paperclip
==Usage
In your model:
class User
include DataMapper::Resource
include Paperclip::Resource
property :id, Integer, :serial => true
property :username, String
has_attached_file :avatar,
:styles => { :medium => "300x300>",
:thumb => "100x100>" }
end
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 your edit and new views:
<% form_for @user, { :action => url(:user), :multipart => true } do %>
<%= file_field :name => 'avatar' %>
<% end %>
In your controller:
def create
...
@user.avatar = params[:avatar]
end
In your show view:
<%= image_tag @user.avatar.url %>
<%= image_tag @user.avatar.url(:medium) %>
<%= image_tag @user.avatar.url(:thumb) %>
The following validations are available:
validates_attachment_presence :avatar
validates_attachment_content_type :avatar, :content_type => "image/png"
validates_attachment_size :avatar, :in => 1..10240
validates_attachment_thumbnails :avatar
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:
class User
include DataMapper::Resource
include DataMapper::Validate
include Paperclip::Resource
property :id, Integer, :serial => true
property :username, String
has_attached_file :avatar,
:styles => { :medium => "300x300>",
:thumb => "100x100>" }
validates_attachment_size :avatar, :in => 1..5120
end





