Paperclip::Imgur

This gem extends Paperclip with Imgur storage. It's been tested with Paperclip 3.3.1 and 4.3.

If you want Paperclip Dropbox support, have a look at this great gem.

Installation

Add this line to your application's Gemfile:

gem 'paperclip-imgur'

And then run:

$ bundle install

Usage

Tell your typical model™ to use Imgur as storage:

class User < ActiveRecord::Base
  has_attached_file :avatar, storage: :imgur
end

Credentials

The credentials to upload and delete images from Imgur will be read from #{Rails.root}/config/imgur.yml. This file must contain the following keys:

client_id: 'CLIENT_ID'
client_secret: 'CLIENT_SECRET'
refresh_token: 'REFRESH_TOKEN'

Get these keys with:

rake imgur:authorize CLIENT_ID='CLIENT_ID' CLIENT_SECRET='CLIENT_SECRET'

Please refer to the API client gem documentation for more information on this.

You can also specify the credentials per model attribute, using a hash:

has_attached_file :avatar, storage: :imgur, imgur_credentials: {client_id: 'CLIENT_ID', client_secret: 'CLIENT_SECRET', refresh_token: 'REFRESH_TOKEN'}

…or path to a YAML file

has_attached_file :avatar, storage: :imgur, imgur_credentials: 'path.to/file.yml'

…or a File itself

has_attached_file :avatar, storage: :imgur, imgur_credentials: File.open('path.to/file.yml', 'r')

Use attachment in views

The image is available in your views in three different sizes:

<%= image_path @user.avatar %>
<%= image_path @user.avatar.url(:small) %>
<%= image_path @user.avatar.url(:large) %>

Deleting images

To delete an image, follow the usual Paperclip procedure:

@user.avatar = nil
@user.save

Testing

Run specs with

rspec