Sha256: e09be3e676563d2b1ece7bf6a538750c7da2cf9e382842fc9585df2ae910c19c

Contents?: true

Size: 848 Bytes

Versions: 14

Compression:

Stored size: 848 Bytes

Contents

module Paperclip
  class StringioAdapter < AbstractAdapter
    def self.register
      Paperclip.io_adapters.register self do |target|
        StringIO === target
      end
    end

    def initialize(target, options = {})
      super
      cache_current_values
    end

    attr_writer :content_type

    private

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

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

Paperclip::StringioAdapter.register

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
kt-paperclip-7.2.2 lib/paperclip/io_adapters/stringio_adapter.rb
kt-paperclip-7.2.1 lib/paperclip/io_adapters/stringio_adapter.rb
kt-paperclip-7.2.0 lib/paperclip/io_adapters/stringio_adapter.rb
kt-paperclip-6.4.2 lib/paperclip/io_adapters/stringio_adapter.rb
kt-paperclip-7.1.1 lib/paperclip/io_adapters/stringio_adapter.rb
kt-paperclip-7.1.0 lib/paperclip/io_adapters/stringio_adapter.rb
kt-paperclip-7.0.1 lib/paperclip/io_adapters/stringio_adapter.rb
kt-paperclip-7.0.0 lib/paperclip/io_adapters/stringio_adapter.rb
kt-paperclip-6.4.1 lib/paperclip/io_adapters/stringio_adapter.rb
kt-paperclip-6.4.0 lib/paperclip/io_adapters/stringio_adapter.rb
kt-paperclip-6.3.0 lib/paperclip/io_adapters/stringio_adapter.rb
kt-paperclip-6.2.2 lib/paperclip/io_adapters/stringio_adapter.rb
kt-paperclip-6.2.1 lib/paperclip/io_adapters/stringio_adapter.rb
kt-paperclip-6.2.0 lib/paperclip/io_adapters/stringio_adapter.rb