KatanaCode/carrierwave-blitline

View on GitHub
README.md

Summary

Maintainability
Test Coverage
[![Latest Version](https://img.shields.io/gem/v/carrierwave-blitline.svg)](https://rubygems.org/gems/carrierwave-blitline)
[![CircleCI](https://circleci.com/gh/KatanaCode/carrierwave-blitline.svg?style=svg)](https://circleci.com/gh/KatanaCode/carrierwave-blitline)
[![Downloads](https://img.shields.io/github/downloads/katanacode/carrierwave-blitline/total.svg)](https://img.shields.io/github/downloads/katanacode/carrierwave-blitline/total.svg)
[![Maintainability](https://api.codeclimate.com/v1/badges/fdd8cffc25d6002a68df/maintainability)](https://codeclimate.com/github/KatanaCode/carrierwave-blitline/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/fdd8cffc25d6002a68df/test_coverage)](https://codeclimate.com/github/KatanaCode/carrierwave-blitline/test_coverage)


---

# Carrierwave::Blitline

This gem is still under construction but it basically works in its current form.

## Installation

Install it with these other Carrierwave gems:

    gem "carrierwave"

    gem "carrierwave-aws"

    gem "carrierwave-blitline"

Then execute

     $ bundle install

Add this to your Carrierwave Uploader files:

    class ImageUploader < CarrierWave::Uploader::Base

      # NOTE: We're using MiniMagick here...
      include CarrierWave::MiniMagick

      require "carrierwave/blitline"
      include CarrierWave::Blitline


      # This macro lets your uploader know you're using Carrierwave
      process_via_blitline


      # other stuff ...

    end

## CONFIGURE

### Your Carrierwave setup should be something like this

    CarrierWave.configure do |config|

      if Rails.env.test?
        config.storage           = :file
        config.enable_processing = false
        config.asset_host        = 'http://test.host'

      else
        config.aws_credentials = {
          :access_key_id     => ENV["AWS_ACCESS_KEY"],
          :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"],
          :region            => ENV["S3_BUCKET_REGION"]
        }
        config.storage            :aws
        config.aws_bucket                       = ENV["S3_BUCKET_NAME"]
        config.aws_acl                          = 'public-read'
        config.aws_attributes                   = {
          expires: 1.week.from_now.httpdate, cache_control: 'max-age=315576000' }

        config.asset_host = "https://%s" % ENV["ASSET_HOST"]
        config.enable_processing                = true
        config.aws_authenticated_url_expiration = 60 * 60 * 24 * 7
      end

    end

### Configuration

The following config attributes must be set for this to work properly.

    CarrierWave::Blitline.s3_bucket_name          = ENV["S3_BUCKET_NAME"]
    CarrierWave::Blitline.s3_bucket_region        = ENV["S3_BUCKET_REGION"]
    CarrierWave::Blitline.blitline_application_id = ENV["BLITLINE_APPLICATION_ID"]


## Usage

Define your carrierwave versions as you normally would.

Basic functions (`resize_to_fit`, `resize_to_fill`, etc.) are dealt with automagically.

For other functions, you need to write two methods in your uploader: 1) The local processing method, 2) the params for Blitline. For example

    # Images will be cropped, and then resized to fill
    version :cropped do
      process :crop
      process :resize_to_fill => [200, 200]
    end

    # Use this when processing locally
    def crop
      manipulate! do |img|
        img = img.crop "#{model.photo_crop_x}x#{model.photo_crop_y}+#{model.photo_crop_width}+#{model.photo_crop_height}"
        img
      end
    end

    # Use this when processing on Blitline
    def params_for_crop(*)
      return {
        x: model.photo_crop_x,
        y: model.photo_crop_y,
        width: model.photo_crop_width,
        height: model.photo_crop_height
      }
    end


## Development

After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/katanacode/carrierwave-blitline.


## License

The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).

## Created by

[Katana — web developers based in Edinburgh, Scotland](https://katanacode.com/)