class Paperclip::StringioAdapter

def self.register

def self.register
  Paperclip.io_adapters.register self do |target|
    StringIO === target
  end
end

def cache_current_values

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)

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

def initialize(target, options = {})

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