/rack-grid-serve

Rack middleware for serving files stored in MongoDB GridFS

Primary LanguageRubyMIT LicenseMIT

Rack Grid Serve

The purpose of Rack::GridServe is to provide an alternative to Rack::Gridfs which works with the Mongo ruby driver version 2.0 and above. This driver has a different API and while the Rack::Gridfs team is working on it, it is not yet ready.

While Rack::GridServe can be used the same way, it is by no mean as complete and well crafted as Rack::Gridfs. So I recommend that you switch back when their next version is ready.

Until then, the function is the same, you can mount the middleware in order to serve images which are hosted in the GridFS part of a Mongo database.

How it works

Here is how you mount it in your config.ru:

require 'rack/grid_serve'
use Rack::GridServe, {
  db: $db,
  prefix: 'gridfs', # Path prefix, default is "gridfs"
  cache_control: 'no-cache' # Default is "no-cache"
}

These are the only options so far.

Rack::GridServe sets the ETag and Last-Modified response headers and uses Rack::ConditionalGet to let the browser use cached version of the files when possible.

Testing

Run tests this way:

bundle exec ruby -I lib test.rb