Sha256: 698ccc0f2c6f923769a2cf0e32581098e47eef0ff47fac35e67463fb89a79654

Contents?: true

Size: 1003 Bytes

Versions: 1

Compression:

Stored size: 1003 Bytes

Contents

require "ostruct"
require "fileutils" unless defined?(FileUtils)
require "storage/errors"
require "aws/s3"

module Storage
  autoload :Config,       "storage/config"
  autoload :Strategies,   "storage/strategies"
  autoload :Version,      "storage/version"

  class << self
    # Set up the storage options.
    #
    #   Storage.setup do |config|
    #     config.strategy = :s3
    #   end
    #
    # Check Storage::Config for available options.
    #
    def setup(&block)
      yield Config
      strategy.prepare!
    end

    # A shortcut to the current strategy.
    def strategy
      Config.strategy_class
    end

    # Save a file.
    def store(*args)
      strategy.store(*args)
    end

    # Destroy a file.
    def remove(*args)
      strategy.remove(*args)
    end

    # Retrieve a file.
    def get(*args)
      strategy.get(*args)
    end
  end
end

Storage::Strategies.register :s3,     Storage::Strategies::S3
Storage::Strategies.register :file,   Storage::Strategies::FileSystem

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
storage-0.1.0 lib/storage.rb