Class: CarrierWave::Storage::Fog
- Defined in:
- vendor/carrierwave/lib/carrierwave/storage/fog.rb
Overview
Stores things using the "fog" gem.
fog supports storing files with AWS, Google, Local and Rackspace
You need to setup some options to configure your usage:
[:fog_credentials] host info and credentials for service [:fog_directory] specifies name of directory to store data in, assumed to already exist
:fog_attributes additional attributes to set on files :fog_public public readability, defaults to true :fog_authenticated_url_expiration time (in seconds) that authenticated urls will be valid, when fog_public is false and provider is AWS or Google, defaults to 600 :fog_use_ssl_for_aws #public_url will use https for the AWS generated URL]
AWS credentials contain the following keys:
[:aws_access_key_id] [:aws_secret_access_key] :region defaults to 'us-east-1' :region should be one of ['eu-west-1', 'us-east-1', 'ap-southeast-1', 'us-west-1', 'ap-northeast-1', 'eu-central-1']
Google credentials contain the following keys: [:google_storage_access_key_id] [:google_storage_secrete_access_key]
Local credentials contain the following keys:
[:local_root] local path to files
Rackspace credentials contain the following keys:
[:rackspace_username] [:rackspace_api_key]
A full example with AWS credentials: CarrierWave.configure do |config| config.fog_credentials = { :aws_access_key_id => 'xxxxxx', :aws_secret_access_key => 'yyyyyy', :provider => 'AWS' } config.fog_directory = 'directoryname' config.fog_public = true end
Defined Under Namespace
Classes: File
Instance Attribute Summary
Attributes inherited from Abstract
Class Method Summary collapse
Instance Method Summary collapse
-
#cache!(new_file) ⇒ Object
Stores given file to cache directory.
- #clean_cache!(seconds) ⇒ Object
- #connection ⇒ Object
-
#delete_dir!(path) ⇒ Object
Deletes a cache dir.
-
#retrieve!(identifier) ⇒ Object
Retrieve a file.
-
#retrieve_from_cache!(identifier) ⇒ Object
Retrieves the file with the given cache_name from the cache.
-
#store!(file) ⇒ Object
Store a file.
Methods inherited from Abstract
Constructor Details
This class inherits a constructor from CarrierWave::Storage::Abstract
Class Method Details
.connection_cache ⇒ Object
58 59 60 |
# File 'vendor/carrierwave/lib/carrierwave/storage/fog.rb', line 58 def connection_cache @connection_cache ||= {} end |
Instance Method Details
#cache!(new_file) ⇒ Object
Stores given file to cache directory.
=== Parameters
[new_file (File, IOString, Tempfile)] any kind of file object
=== Returns
[CarrierWave::SanitizedFile] a sanitized file
106 107 108 109 110 |
# File 'vendor/carrierwave/lib/carrierwave/storage/fog.rb', line 106 def cache!(new_file) f = CarrierWave::Storage::Fog::File.new(uploader, self, uploader.cache_path) f.store(new_file) f end |
#clean_cache!(seconds) ⇒ Object
134 135 136 137 138 139 140 141 142 143 |
# File 'vendor/carrierwave/lib/carrierwave/storage/fog.rb', line 134 def clean_cache!(seconds) connection.directories.new( :key => uploader.fog_directory, :public => uploader.fog_public ).files.all(:prefix => uploader.cache_dir).each do |file| time = file.key.scan(/(\d+)-\d+-\d+/).first.map { |t| t.to_i } time = Time.at(*time) file.destroy if time < (Time.now.utc - seconds) end end |
#connection ⇒ Object
145 146 147 148 149 150 |
# File 'vendor/carrierwave/lib/carrierwave/storage/fog.rb', line 145 def connection @connection ||= begin = credentials = uploader.fog_credentials self.class.connection_cache[credentials] ||= ::Fog::Storage.new() end end |
#delete_dir!(path) ⇒ Object
Deletes a cache dir
130 131 132 |
# File 'vendor/carrierwave/lib/carrierwave/storage/fog.rb', line 130 def delete_dir!(path) # do nothing, because there's no such things as 'empty directory' end |
#retrieve!(identifier) ⇒ Object
Retrieve a file
=== Parameters
[identifier (String)] unique identifier for file
=== Returns
[CarrierWave::Storage::Fog::File] the stored file
91 92 93 |
# File 'vendor/carrierwave/lib/carrierwave/storage/fog.rb', line 91 def retrieve!(identifier) CarrierWave::Storage::Fog::File.new(uploader, self, uploader.store_path(identifier)) end |
#retrieve_from_cache!(identifier) ⇒ Object
Retrieves the file with the given cache_name from the cache.
=== Parameters
[cache_name (String)] uniquely identifies a cache file
=== Raises
[CarrierWave::InvalidParameter] if the cache_name is incorrectly formatted.
123 124 125 |
# File 'vendor/carrierwave/lib/carrierwave/storage/fog.rb', line 123 def retrieve_from_cache!(identifier) CarrierWave::Storage::Fog::File.new(uploader, self, uploader.cache_path(identifier)) end |
#store!(file) ⇒ Object
Store a file
=== Parameters
[file (CarrierWave::SanitizedFile)] the file to store
=== Returns
[CarrierWave::Storage::Fog::File] the stored file
74 75 76 77 78 |
# File 'vendor/carrierwave/lib/carrierwave/storage/fog.rb', line 74 def store!(file) f = CarrierWave::Storage::Fog::File.new(uploader, self, uploader.store_path) f.store(file) f end |