PhocoderRails ================================ PhocoderRails is a rails engine that makes it incredibly easy to integrate your rails app with the [Phocoder](http://www.phocoder.com/) image processing service. ## Installing Add this to your Gemfile: ```ruby gem "phocoder-rails", :require => 'phocoder_rails' ``` And then run: ```term bundle install ``` Then you need to generate a config file and a migration for tracking job status. ```term rails g phocoder_rails:setup create db/migrate/xxxxxxxx_create_encodable_jobs.rb create config/phocodable.yml ``` ## Base Configuration TBD * Setting storage mode * Setting processing mode (foreground / background processing) * Other? ## Generating a new model & scaffolding Letting PhocoderRails generate a new model and scaffold for you is probably the easiest way to get started and to get a feel for how Phocoder works. ```term rails g phocoder_rails:scaffold image_upload create db/migrate/20120731022844_create_image_uploads.rb create app/models/image_upload.rb create app/models/image_upload_thumbnail.rb create app/helpers/image_uploads_helper.rb create app/controllers/image_uploads_controller.rb create app/views/image_uploads create app/views/image_uploads/_form.html.erb create app/views/image_uploads/index.html.erb create app/views/image_uploads/new.html.erb create app/views/image_uploads/show.html.erb route resources :image_uploads, :except=>[:edit,:update] ``` Then run ```term rake db:migrate ``` ## Updating an existing model You can also update an existing model. First generate a migration that will add some extra columns to your table. ```term rails g phocoder_rails:model_update my_model ``` You should read the migration after it is generated to make sure that it makes sense within the context of your model. Then run ```term rake db:migrate ``` Then you should make sure that your form is set up for multi part encoding, and that you have a `file_field` in your form named `file`. ```erb <%= f.file_field :file %> ``` ## Model Configuration PhocoderRails allows you to easily set up your image processing in a simple declarative style. The `acts_as_phocodable` method hooks phocoder-rails into your model and allows you to easily decalre multiple thumbnails that will be generated any time a new model record is created. Thumbnails can include cropping, framing, and annotations. Here's an ImageUpload class that shows and example of how to use `acts_as_phocodable` : ```ruby class ImageUpload < ActiveRecord::Base acts_as_phocodable :thumbnail_class => "ImageUploadThumbnail", :thumbnails => [ {:label=>"small", :width=>100, :height=>100, :aspect_mode => 'crop'}, {:label=>"medium", :width=>400, :height=>400, :aspect_mode => 'preserve', :frame=>{ :width=>20, :bottom=>50, :color=>'003' }, :annotations=>[ {:text=>"Annotation Testing",:pointsize=>30,:fill_color=>'fff',:gravity=>"South",:y=>10}, {:text=>"Howdy!",:pointsize=>10,:fill_color=>'ccc',:gravity=>"North",:y=>5} ] } ] end ``` This will result in two 'thumbnail' images being created every time a new image is uploaded. One will be exactly 100x100 square, and the other one will be scaled proportionally to fit inside 400x400, with a 20 pixel border on top, left, and right, and a 50 pixel border on bottom, with text annotations added on top and on the bottom of the image. [Add images] ## Storage and Processing Modes