= Attached Attached is a Ruby on Rails file attachment tool that lets users upload to the cloud, then process in the cloud. The gem supports AWS, Google and Rackspace for storage networks by default. It is influenced (and copied) from Paperclip. == Requirements The gem has only been tested with Ruby 1.9.2 and Rails 3.0.3 but may well work with other versions of Ruby and Rails. == Installation gem install attached == Examples Migration: class CreateVideo < ActiveRecord::Migration def self.up create_table :videos do |t| t.string :encoding_identifier t.string :encoding_extension t.integer :encoding_size t.timestamps end end def self.down drop_table :videos end end Model: has_attached :encoding, :styles => { :mp4_720p => { :extension => '.mp4' }, :mp4_480p => { :extension => '.mp4' }, :ogg_720p => { :extension => '.ogv' }, :ogg_480p => { :extension => '.ogv' }, } after_save do remote.encode(self.encoding.url) end Form: <%= form_for @video, :html => { :multipart => true } do |form| %> <%= form.file_field :encoding %> <% end %> View: == Advanced === Validations # app/models/person.rb validates_attached_presence :avatar validates_attached_size :avatar, :in => 2.kilobytes..2.megabytes ==== Storage # app/models/person.rb has_attached :avatar, :medium => :aws, :credentials => "#{Rails.root}/config/aws.yml" # app/models/person.rb has_attached :avatar, :medium => :google, "#{Rails.root}/config/google.yml" # app/models/person.rb has_attached :avatar, :medium => :rackspace, "#{Rails.root}/config/rackspace.yml" # config/initializers/attached.rb Attached::Attachment.options[:medium] = :aws Attached::Attachment.options[:credentials] = "#{Rails.root}/config/aws.yml" # config/initializers/attached.rb Attached::Attachment.options[:medium] = :google Attached::Attachment.options[:credentials] = "#{Rails.root}/config/google.yml" # config/initializers/attached.rb Attached::Attachment.options[:medium] = :rackspace Attached::Attachment.options[:credentials] = "#{Rails.root}/config/rackspace.yml" === Processor # app/models/person.rb has_attached :avatar, :processor => :image, :styles => { :small => { :size => '200x200<', :extension => 'png' }, :large => { :size => '400x400>', :extension => 'png' }, :default => { :size => '300x300#' }, } === Aliases # app/initializer/attached.rb Attached::Attachment.options[:alias] = http://c0378198.cdn2.cloudfiles.rackspacecloud.com # app/initializer/attached.rb Attached::Attachment.options[:aliases] = %w( http://d1kf5um3mxa8kv.cloudfront.net/ http://d3d5wf186mp1rv.cloudfront.net/ http://d2wmfkw6rydl1g.cloudfront.net/ http://d1gqpdc40l7s16.cloudfront.net/ ) == Copyright Copyright (c) 2010 Kevin Sylvestre. See LICENSE for details.