The GridFS Ruby Driver should be able to read from GridFS into a buffer passed into #read. That buffer should be permitted to be a String, StringIO, or IO.
Tempfile.open("from-gridfs") do |f|
gridfs = Mongo::GridFileSystem.new(Mongoid.database)
gridfs_file = gridfs.open(path, 'r')
gridfs_file.read(f, 4096) until gridfs_file.eof?