Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Full-stack asset management for Ruby on Rails. With Paperclip, SWFUpload, jQuery, jgrow, Jcrop and Facebox.
JavaScript Ruby

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
app
config
generators/papermill
lib
public
rails
tasks
test
.gitignore
MIT-LICENSE
README.rdoc
Rakefile
VERSION
init.rb
install.rb
installation-template.txt
papermill.gemspec
uninstall.rb

README.rdoc

Papermill

Asset management made easy.

Install the gem!

$ gem sources -a http://gems.github.com
$ sudo gem install BBenezech-papermill

Try the demo!

$ sudo gem install sqlite3-ruby
$ rails -m http://gist.github.com/177714.txt papermill-example
$ cd papermill-example
$ ./script/server
$ GoTo localhost:3000 and try to create an article with assets but without title
$ profit

Papermill comes in 2 flavors:

Generic catch-all declaration

papermill {my_option_hash}                             # in your papermilled assetable model
assets_upload(:my_key, {optional_option_hash})         # form helper call
@assetable.papermill_assets(:key => :my_key)           # data access in your view

Association specific declaration

papermill :my_association, {my_option_hash}            # in your papermilled assetable model
assets_upload(:my_association, {optional_option_hash})  # form helper call
@assetable.my_association                              # data access in your view

In both case, you can specify a PapermillAsset subclass to use with :class_name => MyPapermillAssetSubclass in the option hash You can have a catch-all declaration and as many specific association as you want in your model (as long as they use different keys)

See papermill_module.rb for the complete list of options.

Installation

You'll need something like this in your environment.rb:

config.gem 'rsl-stringex', :lib => 'stringex'
config.gem 'paperclip'
config.gem 'mime-types', :lib => 'mime/types'
config.gem 'ryanb-acts-as-list', :lib => 'acts_as_list'
config.gem 'BBenezech-papermill', :lib => 'papermill'

Then you can generate a migration and copy a couple of static assets:

$ ./script/generate papermill PapermillMigration
# will generate a migration named PapermillMigration and copy a couple of static assets
$ rake db:migrate

In your assetable model:

# You can set a catch-all papermill association : 
papermill {:class_name => Asset}

# or create an association for the specific :my_gallery key
papermill :my_gallery, {
  :class_name => GalleryAsset,
  :thumbnail => {
      :width => 90,
      :height => 30
  }
}

In your layout:

<%= papermill_stylesheet_tag %>
<%= papermill_javascript_tag :with_jquery => "no_conflict" %>
# you won't need :with_jquery if you use it already, obviously.

In your edit form:

f.images_upload(:my_gallery)     # use specific papermill :my_gallery declaration
f.assets_upload(:my_assets)      # use catch-all
f.asset_upload(:my_other_asset)  # use catch-all

Access them with:

@assetable.my_gallery.each{ |image| image.url("100x100") }
@assetable.papermill_assets(:key => :my_assets).each{ |asset| asset.url }
@assetable.papermill_assets(:key => :my_other_asset).first.url

Also see gist.github.com/177714.txt for more precises installation steps. Have a look at the API here rdoc.info/projects/BBenezech/papermill

Translations:

Papermill is fully I18n-able. Copy config/locales/papermill.yml to your root config/locale folder to modify any wording in a any locale.

Word of caution:

Beta. Wait for gem 1.0.0 for the production ready thing. This is xNIX only (system(“rm …”)). Rails 2.3

Copyright © 2009 Benoit Bénézech, released under the MIT license

Something went wrong with that request. Please try again.