Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

attached

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

attached

  • 1.0.7
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

= Attached

Attached is a Ruby on Rails file attachment tool that lets users upload to the cloud. The gem supports AWS, Google and Rackspace for storage networks by default. It is influenced (and copied) from Paperclip and makes heavy use of the incredibly awesome Fog library.

== Requirements

The gem is tested with:

  • Ruby on Rails 4.1.2
  • Ruby on Rails 4.0.6
  • Ruby 2.1.2
  • Ruby 2.0.0
  • Ruby 1.9.3
  • JRuby

== Installation

gem install attached

== Optional

brew install imagemagick brew install lame

== Examples

Migration:

rails g model video name:string encoding:attachment

class CreateVideo < ActiveRecord::Migration def self.up create_table :videos do |t| t.string :name t.attachment :encoding

    t.timestamps
  end
end

def self.down
  drop_table :videos
end

end

Model:

class Video < ActiveRecord::Base

has_attached :encoding, styles: { 
  webm: { extension: '.webm' },
  mp4:  { extension: '.mp4'  },
  ogv:  { extension: '.ogv'  },
}

after_save do
  remote.encode(self.encoding.url)
end

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 :file validates_attached_size :file, in: 2.kilobytes..2.megabytes validates_attached_extension :file, in: %w(jpe jpg jpeg png)

==== Storage

app/models/user.rb

has_attached :file, medium: :aws, credentials: "#{Rails.root}/config/aws.yml"

app/models/user.rb

has_attached :file, medium: :google, credentials: "#{Rails.root}/config/google.yml"

app/models/user.rb

has_attached :file, medium: :rackspace, credentials: "#{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"

=== Processors

app/models/image.rb

has_attached :file, processor: :image, styles: { small: { size: '200x200>', extension: '.jpg', quality: 90 }, large: { size: '400x400<', extension: '.jpg', quality: 90 }, default: { size: '300x300#', extension: '.jpg', quality: 90 }, }

app/models/image.rb

has_attached :file, processor: :image, styles: { small: { operation: :decrease, width: 200, height: 200, extension: '.jpg', quality: 90 }, large: { operation: :increase, width: 400, height: 400, extension: '.jpg', quality: 90 }, default: { operation: :resize, width: 300, height: 300, extension: '.jpg', quality: 90 }, }

app/models/audio.rb

has_attached :file, processor: :audio, styles: { full: { preset: '320kbps', extension: '.wav' }, large: { preset: '256kbps', extension: '.wav' }, small: { preset: '128kbps', extension: '.wav' }, }

app/models/audio.rb

has_attached :file, processor: :audio, styles: { full: { preset: 'insane', extension: '.wav' }, large: { preset: 'extreme', extension: '.wav' }, small: { preset: 'medium', extension: '.wav' }, }

=== Strategies

app/models/sample.rb

has_attached :file, processor: ..., styles: { ... }, strategy: :delay has_attached :file, processor: ..., styles: { ... }, strategy: :cache

=== Reprocessing

rake attached:process[Image,file] rake attached:process[Audio,file]

=== Aliases

app/initializer/attached.rb

Attached::Attachment.options[:alias] = "https://storage.ksylvest.com/"

app/initializer/attached.rb

Attached::Attachment.options[:aliases] = %w( https://a.storage.ksylvest.com/ https://b.storage.ksylvest.com/ https://c.storage.ksylvest.com/ https://d.storage.ksylvest.com/ )

=== Metadata

app/initializers/attached.rb

Attached::Attachment.options[:metadata] = { 'Cache-Control' => 'max-age=3153600' }

== Status

{}[https://gemnasium.com/ksylvest/attached] {}[https://travis-ci.org/ksylvest/attached] {}[https://coveralls.io/r/ksylvest/attached] {}[https://codeclimate.com/github/ksylvest/attached]

== Copyright

Copyright (c) 2010 - 2014 Kevin Sylvestre. See LICENSE for details.

FAQs

Package last updated on 04 Dec 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc