require "aws-sdk" module RailsConnector class Blob def self.find(id, options) new(blob_class.find(id, options)) end def self.config @config or raise "Blob storage has not been configured yet" end def self.configure(spec) @config = spec.symbolize_keys end def self.blob_class @blob_class ||= blob_class_from_config end # for testing purposes def self.reset_blob_class_cache # :nodoc: @blob_class = nil end def self.blob_class_from_config blob_class = case config[:type] when "s3" S3Blob when "couch" CouchBlob else raise "Unsupported blob storage type #{config[:type]}" end blob_class.configure(config) blob_class end attr_reader :instance def initialize(blob_instance) @instance = blob_instance end def id instance.id end def url instance.url end def content_type instance.content_type end def length instance.length end end end # module RailsConnector