class CarrierWave::Storage::GridFS

The GridFS store uses MongoDB's GridStore file storage system to store files

When you already have a Mongo connection object (for example through Mongoid) you can also reuse this connection:

  CarrierWave.configure do |config|
    config.storage = :grid_fs
    config.grid_fs_access_url = "/system/uploads"
  end

In the above example your documents url will look like:

   http://your-app.com/system/uploads/:document-identifier-here

Public Instance Methods

cache!(file) click to toggle source

Cache the file in MongoDB's GridFS GridStore

Parameters

file (CarrierWave::SanitizedFile)

the file to store

Returns

CarrierWave::SanitizedFile

a sanitized file

# File lib/carrierwave/storage/grid_fs.rb, line 123
def cache!(file)
  stored = CarrierWave::Storage::GridFS::File.new(uploader, uploader.cache_path)
  stored.write(file)
  stored
end
clean_cache!(seconds) click to toggle source

Clean old caches

Parameters

seconds (Integer)

duration in seconds, caches older than this will be deleted

# File lib/carrierwave/storage/grid_fs.rb, line 155
def clean_cache!(seconds)
  File.grid.namespace.
    where(filename: /\d+-\d+-\d+(?:-\d+)?\/.+/).
    and(:filename.lt => (Time.now.utc - seconds).to_i.to_s).
    delete
end
delete_dir!(path) click to toggle source
# File lib/carrierwave/storage/grid_fs.rb, line 144
def delete_dir!(path)
  # do nothing, because there's no such things as 'empty directory'
end
retrieve!(identifier) click to toggle source

Retrieve the file from MongoDB's GridFS GridStore

Parameters

identifier (String)

the filename of the file

Returns

CarrierWave::Storage::GridFS::File

a sanitized file

# File lib/carrierwave/storage/grid_fs.rb, line 108
def retrieve!(identifier)
  CarrierWave::Storage::GridFS::File.new(uploader, uploader.store_path(identifier))
end
retrieve_from_cache!(identifier) click to toggle source

Retrieve the cached file from MongoDB's GridFS GridStore

Parameters

identifier (String)

uniquely identifies a cache file

Returns

CarrierWave::Storage::GridFS::File

a sanitized file

# File lib/carrierwave/storage/grid_fs.rb, line 140
def retrieve_from_cache!(identifier)
  CarrierWave::Storage::GridFS::File.new(uploader, uploader.cache_path(identifier))
end
store!(file) click to toggle source

Store the file in MongoDB's GridFS GridStore

Parameters

file (CarrierWave::SanitizedFile)

the file to store

Returns

CarrierWave::SanitizedFile

a sanitized file

# File lib/carrierwave/storage/grid_fs.rb, line 91
def store!(file)
  stored = CarrierWave::Storage::GridFS::File.new(uploader, uploader.store_path)
  stored.write(file)
  stored
end