我正在研究Rails4,Mongoid4和Gridfs。我;无法连接gridfs文件系统
class GridfsController < ApplicationController
def serve
gridfs_path = env["PATH_INFO"].gsub("/uploads/", "")
begin
gridfs_file = Mongo::GridFileSystem.new(Mongo::DB.new('database_name', Mongo::Connection.new('localhost'))).open(gridfs_path, 'r')
self.response_body = gridfs_file.read
self.content_type = gridfs_file.content_type
rescue Exception => e
self.status = :file_not_found
self.content_type = 'text/plain'
self.response_body = ''
raise e
end
end
end
获取此错误
NameError(未初始化的常量GridfsController :: Mongo):
app / controllers / gridfs_controller.rb:7:在'serve'
答案 0 :(得分:0)
Mongoid没有使用“官方”Ruby驱动程序与MongoDB交谈,这就是Mongo::GridFileSystem
的来源。 Mongoid使用Moped与MongoDB交谈,而Moped对GridFS一无所知。
AFAIK通常的GridFS解决方案是使用mongoid-grid_fs与GridFS交谈:
self.response_body = Mongoid::GridFs[gridfs_path].data
或者如果你有id
而不是路径:
self.response_body = Mongoid::GridFs.get(gridfs_id).data
答案 1 :(得分:0)
这里有一个针对Moped驱动程序的gridfs规范的实现:moped-gridfs
比装载两个司机(轻便摩托车和蒙古红宝石司机)更好