Skip to content

Instantly share code, notes, and snippets.

@blizzarddreams
Created February 23, 2015 01:50
Show Gist options
  • Select an option

  • Save blizzarddreams/32c983743346e9b618f9 to your computer and use it in GitHub Desktop.

Select an option

Save blizzarddreams/32c983743346e9b618f9 to your computer and use it in GitHub Desktop.
# encoding: utf-8
class ImageUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
#include CarrierWave::RMagick
include CarrierWave::MiniMagick
# Choose what kind of storage to use for this uploader:
storage :file
# storage :fog
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"uploads/#{model.random_id}"
end
# Provide a default URL as a default if there hasn't been a file uploaded:
# def default_url
# # For Rails 3.1+ asset pipeline compatibility:
# # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
#
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
# end
# Process files as they are uploaded:
# process :scale => [200, 300]
#
# def scale(width, height)
# # do something
# end
def remove_animation
manipulate! do |img, index|
index == 0 ? img : nil
end
end
# Create different versions of your uploaded files:
version :thumb do
process :remove_animation
process :resize_to_fill => [100, 100]
process :convert => 'jpg'
end
version :resized do
process :resize_to_limit => [500,1000]
end
#
# Add a white list of extensions which are allowed to be uploaded.
# For images you might use something like this:
def extension_white_list
%w(jpg jpeg gif png)
end
# Override the filename of the uploaded files:
# Avoid using model.id or version_name here, see uploader/store.rb for details.
# def filename
# "something.jpg" if original_filename
# end
end
class ImagesController < ApplicationController
before_action :authenticate_user!, :except => [:show]
def new
@image = Image.new
end
def create
@image = Image.create(image_params)
if @image.save
redirect_to image_path(@image.random_id)
else
render 'new'
end
end
def show
@image = Image.friendly.find(params[:id])
end
def destroy
@image = Image.friendly.find(params[:id])
@image.destroy
respond_to do |format|
format.js { render 'new'}
format.html { redirect_to root_path }
end
end
private
def image_params
params.require(:image).permit(:user_id, :title, :image, :random_id)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment