Sha256: c131b78759caaa914b94d7fbcf95f04caa876d4aed32fbf747b267f6f26fa0ee

Contents?: true

Size: 968 Bytes

Versions: 3

Compression:

Stored size: 968 Bytes

Contents

module Paperclip
  class StringioAdapter < AbstractAdapter
    def initialize(target)
      @target = target
      @tempfile = copy_to_tempfile
      cache_current_values
    end

    attr_writer :content_type

    private

    def cache_current_values
      @content_type = ContentTypeDetector.new(@tempfile.path).detect
      original_filename = @target.original_filename if @target.respond_to?(:original_filename)
      original_filename ||= "data.#{extension_for(@content_type)}"
      self.original_filename = original_filename.strip
      @size = @target.size
    end

    def copy_to_tempfile
      while data = @target.read(16*1024)
        destination.write(data)
      end
      destination.rewind
      destination
    end

    def extension_for(content_type)
      type = MIME::Types[content_type].first
      type && type.extensions.first
    end

  end
end

Paperclip.io_adapters.register Paperclip::StringioAdapter do |target|
  StringIO === target
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
paperclip-4.1.1 lib/paperclip/io_adapters/stringio_adapter.rb
paperclip-4.1.0 lib/paperclip/io_adapters/stringio_adapter.rb
paperclip-4.0.0 lib/paperclip/io_adapters/stringio_adapter.rb