Sha256: 94b241e26220f2596ef773b92962ff8818366c87c0c0fff4a2cd499c2c787812

Contents?: true

Size: 1.41 KB

Versions: 2

Compression:

Stored size: 1.41 KB

Contents

gem 'cloudfiles'

module CloudCrowd
  class AssetStore

    # The CloudFilesStore is an implementation of an AssetStore that uses a Rackspace Cloud
    module CloudfilesStore

      # Configure Rackspace Cloud and connect
      def setup
        username  = CloudCrowd.config[:cloudfiles_username]
        api_key   = CloudCrowd.config[:cloudfiles_api_key]
        container = CloudCrowd.config[:cloudfiles_container]
        valid_conf  = [username, api_key, container].all? {|s| s.is_a? String }
        raise Error::MissingConfiguration, "A Rackspace Cloud Files account must be configured in 'config.yml' before 'cloudfiles' storage can be used" unless valid_conf

        @cloud = CloudFiles::Connection.new(username, api_key)
        @container = @cloud.container container
      end

      # Save a finished file from local storage to Cloud Files.
      def save(local_path, save_path)
        object = @container.create_object save_path, true
        object.load_from_filename local_path
        object.public_url
      end

      # Remove all of a Job's resulting files from Cloud Files, both intermediate and finished.
      def cleanup(job)
          @container.objects(:prefix => "#{job.action}/job_#{job.id}").each do |object|
            begin
              @container.delete_object object
            rescue
              log "failed to delete #{job.action}/job_#{job.id}"
            end
          end
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cloud-crowd-0.4.1 lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.4.0 lib/cloud_crowd/asset_store/cloudfiles_store.rb