Sha256: 3ccbbfdd83f360ac5247764d3718adcb3b927411f7906ec330fa430126997170

Contents?: true

Size: 1.4 KB

Versions: 16

Compression:

Stored size: 1.4 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

16 entries across 16 versions & 1 rubygems

Version Path
cloud-crowd-0.7.6 lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.7.5 lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.7.3 lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.7.2 lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.7.2.beta lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.7.2.pre3 lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.7.2.pre2 lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.7.2.pre lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.7.1 lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.7.0 lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.7.0.pre lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.6.2 lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.6.1 lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.6.0 lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.5.2 lib/cloud_crowd/asset_store/cloudfiles_store.rb
cloud-crowd-0.5.0 lib/cloud_crowd/asset_store/cloudfiles_store.rb