Monogid4 Gridfs连接失败

时间:2014-01-06 06:06:47

标签: mongodb ruby-on-rails-4 mongoid carrierwave gridfs

我正在研究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'

2 个答案:

答案 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

比装载两个司机(轻便摩托车和蒙古红宝石司机)更好