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