Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Rack middleware for adding HTTP endpoints for files stored in MongoDB GridFS
branch: master

This branch is 2 commits ahead of mattbeedle:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
example
lib/rack
test
.gitignore
LICENSE
README.rdoc
Rakefile
VERSION
rack-gridfs.gemspec

README.rdoc

Rack::GridFS

Rack:GridFS is a Rack middleware for creating HTTP endpoints for files stored in MongoDB's GridFS. You can configure a prefix string which will be used to match the path of a request and supply an id for looking up the file in the GridFS store.

For example,

GET '/gridfs/someobjectid-filename'
EX. '/gridfs/4ccd0baa4d54340824000003-avatar.gif'

If the prefix is “gridfs”, then the id will be be “someobjectid”.

Mongo Driver Compatibility Notes

This version is currently based off of mongo-0.20.1.

As of mongo-0.19.1, there have been significant changes to GridFS. I do not plan to support versions of the mongo driver prior to 0.19. There are some compatibility issues with mongo-0.19 vs. mongo-0.20 (Mongo::ObjectId vs. BSON::ObjectId). For now, I am choosing to support mongo-0.20.

Installation

sudo gem install skinandbones-rack-gridfs --source=http://gems.github.com

Usage

require 'rack/gridfs'
use Rack::GridFS, :hostname => 'localhost', :port => 27017, :database => 'test', :prefix => 'gridfs'

You must specify MongoDB database details:

  • hostname: the hostname/IP where the MongoDB server is running. Default 'localhost'.

  • port: the port of the MongoDB server. Default 27017.

  • database: the MongoDB database to connect to.

  • prefix: a string used to match against incoming paths and route to through the middleware. Default 'gridfs'.

Sinatra Example

# TODO: THIS COULD USE A LOT MORE EXPLANATION!

require 'rubygems'
require 'sinatra'

require 'rack/gridfs'
use Rack::GridFS, :hostname => 'localhost', :port => 27017, :database => 'test', :prefix => 'gridfs'

get /.*/ do
  "The URL did not match a file in GridFS."
end

Copyright

Copyright © 2010 Blake Carlson. See LICENSE for details.

Something went wrong with that request. Please try again.