Skip to content

Instantly share code, notes, and snippets.

View PiotrWald's full-sized avatar

Piotr Wald PiotrWald

  • Warsaw, Poland
View GitHub Profile
@PiotrWald
PiotrWald / setup.sh
Last active June 25, 2022 21:44 — forked from bradp/setup.sh
New Mac Setup Script
#!/bin/bash
echo "Creating an SSH key for you..."
ssh-keygen -t rsa
printf "Please add this public key to Github"
printf "https://github.com/account/ssh"
read -pr "Press [Enter] key after this..."
echo "Installing xcode-stuff"
@PiotrWald
PiotrWald / console.sh
Created November 6, 2020 08:33
Console output
curl -X POST -w "@curl-format.txt" -o /dev/null -s -F image=@example.png localhost:3000/uploads
time_total: 0.014959s
@PiotrWald
PiotrWald / uploads_controller.rb
Created November 6, 2020 08:17
controllers/uploads_controller.rb
class UploadsController < ApplicationController
def create
upload = Upload.new
upload.image = params[:image]
upload.save!
head :ok
end
end
@PiotrWald
PiotrWald / promote_job.rb
Created November 6, 2020 08:11
jobs/promote_job.rb
class PromoteJob
include Sidekiq::Worker
def perform(attacher_class, record_class, record_id, name, file_data)
attacher_class = Object.const_get(attacher_class)
record = Object.const_get(record_class).find(record_id) # if using Active Record
attacher = attacher_class.retrieve(model: record, name: name, file: file_data)
attacher.atomic_promote
rescue Shrine::AttachmentChanged, ActiveRecord::RecordNotFound
@PiotrWald
PiotrWald / upload.rb
Created November 6, 2020 08:07
models/upload.rb
class Upload < ApplicationRecord
include ImageUploader::Attachment(:image)
end
@PiotrWald
PiotrWald / image_uploader.rb
Created November 6, 2020 08:01
uploaders/image_uploader.rb
require 'image_processing/mini_magick'
class ImageUploader < Shrine
Attacher.derivatives do |original|
magick = ImageProcessing::MiniMagick.source(original)
{
small: magick.resize_to_limit!(300, 300),
medium: magick.resize_to_limit!(500, 500),
large: magick.resize_to_limit!(800, 800),
@PiotrWald
PiotrWald / shrine.rb
Created November 6, 2020 07:48
initializers/shrine.rb
require 'shrine'
require 'shrine/storage/file_system'
Shrine.storages = {
cache: Shrine::Storage::FileSystem.new('public', prefix: 'uploads/cache'), # temporary
store: Shrine::Storage::FileSystem.new('public', prefix: 'uploads'), # permanent
}
Shrine.plugin :activerecord # AR integration
Shrine.plugin :derivatives, create_on_promote: true # Save image in multiple versions
@PiotrWald
PiotrWald / mage_uploader.rb
Created November 5, 2020 20:06
shrine-uploader-api
require "image_processing/mini_magick"
class ImageUploader < Shrine
Attacher.derivatives do |original|
magick = ImageProcessing::MiniMagick.source(original)
{
small: magick.resize_to_limit!(300, 300),
medium: magick.resize_to_limit!(500, 500),
large: magick.resize_to_limit!(800, 800),
@PiotrWald
PiotrWald / Gemfile
Created November 5, 2020 19:56
Gemfile addtions for shrine-uploader-api
gem 'shrine', '~> 3.0'
gem 'sidekiq', '~> 6.1', '>= 6.1.2'
gem "image_processing", '~> 1.8' # Used to create image versions