Tag Archives: GridFS

Rails3下Carrierwave+Gridfs强制下载

当用Carrierwave+GridFS存储媒体文件并只提供下载时,如果只是用@model.file_url的方式显示下载连接,像图片、视频、PDF文件会默认被浏览器直接打开浏览。 如果文件是直接存储到硬盘上时,可以使用send_file方法,悲剧的是,我的媒体文件存储在GridFS里,用send_file方法试了半天也没成功。(我在ruby-china的求助帖),总是ActionController::MissingFile。 通过对GridfsController的调试,发现用send_file方法时并没有调用serve方法,(关于我的环境搭建见《Rails3下使用MongoDB做为数据库并使用GridFS保存文件》),知道的同学麻烦请告之。 于是就在ApplicationController里写了一个download_file方法,实现原理和GridfsController中的serve方法一样,用来供前后台调用,强制下载Gridfs中的媒体文件。

用Rake脚本实现将MySQL数据导入MongoDB及GridFS

接上回《Rails3下使用MongoDB做为数据库并使用GridFS保存文件》,这次需要将MySQL表中的数据导入MongoDB中,并将其中一个字段的内容写入文件并将文件保存到GridFS中,使用Rake脚本来实现会方便很多,下面是一个简单的MySQL表的结构(数据库和表名都是demo):

Rails3下使用MongoDB做为数据库并使用GridFS保存文件

最近抽空玩了一下Ruby on Rails,用MongoDB来做主数据库,各种Gem功能集合起来还真有些眼花缭乱,决定在博客中把其中较为麻烦的过程记录下来备忘并巩固一下,也为来访者提供一点可用信息。关于环境搭建,如果你用的ubuntu,可以参考我之前在wiki中记录的《Ubuntu下搭建Ruby on Rails+MongoDB+Redis环境》。