Sha256: 4103dad79fcf5cc2a4e26378b836ecaadc338c5c4cc2b3ab4314706251e71993

Contents?: true

Size: 1.48 KB

Versions: 2

Compression:

Stored size: 1.48 KB

Contents

require "uri"
require "fileutils"
require "tempfile"

module Defile
  class Invalid < StandardError; end

  class << self
    attr_accessor :read_chunk_size, :app, :host, :direct_upload
    attr_writer :store, :cache

    def backends
      @backends ||= {}
    end

    def processors
      @processors ||= {}
    end

    def processor(name, processor = nil, &block)
      processor ||= block
      processors[name.to_s] = processor
    end

    def store
      backends["store"]
    end

    def store=(backend)
      backends["store"] = backend
    end

    def cache
      backends["cache"]
    end

    def cache=(backend)
      backends["cache"] = backend
    end

    def configure
      yield self
    end

    def verify_uploadable(uploadable, max_size)
      [:size, :read, :eof?, :close].each do |m|
        unless uploadable.respond_to?(m)
          raise ArgumentError, "does not respond to `#{m}`."
        end
      end
      if max_size and uploadable.size > max_size
        raise Defile::Invalid, "#{uploadable.inspect} is too large"
      end
      true
    end
  end

  require "defile/version"
  require "defile/attachment"
  require "defile/random_hasher"
  require "defile/file"
  require "defile/app"
  require "defile/backend/file_system"
end

Defile.configure do |config|
  # FIXME: what is a sane default here? This is a little less than a
  # memory page, which seemed like a good default, is there a better
  # one?
  config.read_chunk_size = 3000
  config.direct_upload = ["cache"]
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
defile-0.2.1 lib/defile.rb
defile-0.2.0 lib/defile.rb