Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
rails metal to be used with carrierwave (gridfs) and MongoMapper
config.metals = ["Gridfs"]
# rails metal to be used with carrierwave (gridfs) and MongoMapper
require 'mongo'
require 'mongo/gridfs'
# Allow the metal piece to run in isolation
require(File.dirname(__FILE__) + "/../../config/environment") unless defined?(Rails)
class Gridfs
def self.call(env)
if env["PATH_INFO"] =~ /^\/images\/gridfs\/(.+)$/
key = $1
if ::GridFS::GridStore.exist?(MongoMapper.database, key)
::GridFS::GridStore.open(MongoMapper.database, key, 'r') do |file|
[200, {'Content-Type' => file.content_type}, [file.read]]
end
else
[404, {'Content-Type' => 'text/plain'}, ['File not found.']]
end
else
[404, {'Content-Type' => 'text/plain'}, ['File not found.']]
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.