中间插件:gem 'carrierwave-mongoid'
使用MongoDB's GridFS存储文件。
1、在Gemefile文件中添加carrierwave-mongoid
gem 'mongoid'
gem 'mongoid-grid_fs'
gem 'carrierwave'
gem 'carrierwave-mongoid'
gem 'mini_magick'
2、创建carrierwave的配置文件config/initializers/carrierwave.rb。
#> config/initializers/carrierwave.rb
CarrierWave.configure do |config|
config.storage = :grid_fs
# Storage access url
config.grid_fs_access_url = "/upload/grid"
end
3、在模型中设置要存储的文件
#> app/models/user.rb
class User
include Mongoid::Document
mount_uploader :avatar, AvatarUploader
end
4、创建上传文件的管理器。
#> app/uploaders/avatar_uploader
class AvatarUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
def store_dir
"#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process :resize_to_limit => [200, 200]
end
end
5、创建GridFS控制器。
#> app/controllers/gridfs_controller.rb
class GridfsController < ApplicationController
def serve
gridfs_path = env["PATH_INFO"].gsub("/upload/grid/", "")
begin
gridfs_file = Mongoid::GridFS[gridfs_path]
self.response_body = gridfs_file.data
self.content_type = gridfs_file.content_type
rescue
self.status = :file_not_found
self.content_type = 'text/plain'
self.response_body = ''
end
end
end
6、配置路由。
#> config/routes.rb
get "/upload/grid/*path" => "gridfs#serve"
相关推荐
Ruby On Rails系列从入门到精通实战教程 Ruby基础+Rails框架+网上商城项目实战
标题 "CRA+RailsAPI+设计登录+ActiveAdmin样板_Ruby_JavaScript_下" 提供了关于项目的核心技术栈,其中包括Create React App (CRA)、Ruby on Rails API 和 ActiveAdmin,以及登录功能的设计。这是一份使用前端React...
安装安装最新版本: gem install carrierwave-mongoid在您的代码中要求它: require 'carrierwave/mongoid' 或者,在Rails中,您可以将其添加到您的Gemfile中: gem 'carrierwave-mongoid' , :require => '...
标题 "RailsAPI+React+Deviseの认证机能さんプル_Ruby_TypeScript.zip" 提供了一个项目概览,它是一个使用Rails API、React前端和Devise进行身份验证的示例应用。这个项目融合了Ruby on Rails后端开发框架、React...
标题 "Rails3+GithubOAuth2+设计示例应用程序" 提供了我们正在处理一个使用Rails 3框架构建的Web应用程序,该应用集成了Github的OAuth2授权机制。Rails是Ruby on Rails的简称,是一个流行的开源Web开发框架,以其DRY...
rails-carrierwave-s3 使用 Rails 中的 Carrierwave 将图像上传到 S3。 克隆这个 repo,然后运行: bundle install rake db:migrate 之后,您需要从 AWS 获取密钥以上传到 S3。 将这些密钥存储在您的config/...
Prosopite能够以零误报/误报自动检测Rails N + 1查询。 Prosopite Prosopite能够自动检测零误报/误报的Rails N + 1查询。 已检测到N + 1个查询:从`users`的WHERE`users.`id` = 20 LIMIT 1中选择SELECT`users`。*从`...
Rails3 + Mongoid + Devise 这是一个将Devise与Mongoid相结合的示例Rails 3应用程序。 gem为您提供现成的身份验证和用户管理。 MongoDB与 gem一起用作数据存储,无需进行架构或迁移即可快速开发。 该项目已完成! ...
这个“Ruby+Rails+社交+教程”显然旨在引导开发者如何利用Rails的灵活性和强大功能构建一个完整的社交平台。以下是教程可能涵盖的一些核心知识点: 1. **Ruby基础知识**:首先,你需要对Ruby编程语言有基本的理解,...
Rails4 + AngularJS 查看演示应用程序。 使用 Rails4 + AngularJS 的 CRUD 示例 在这个应用程序中,我给出了如何使用 Rails4 和 AngularJS 创建 CRUD 操作的示例。 使用 AngularJS 创建嵌套表单 当我们需要在 ...
总结来说,这个"rails+grape+swagger+devise+capistrano"的简单融合示例展示了一个完整的、功能齐全的API项目架构。Rails作为基础框架,Grape负责API的构建,Swagger用于API的文档化,Devise处理用户认证,而...
本教程“Ruby+Rails+社交+教程3”旨在帮助开发者掌握如何利用Ruby的强大功能和Rails的优雅设计来构建一个具有用户交互性的社交平台。 首先,让我们深入了解一下Ruby。Ruby是一种面向对象的编程语言,以其简洁、易读...
在本“Ruby+Rails+社交+进阶教程5”中,我们将深入探讨如何利用Ruby on Rails框架构建一个功能丰富的社交网络平台。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制...
Rails 5.1+的开源内容管理系统 有关更多信息,访问 您可以使用Gitter与我们聊天: 您可以将示例应用程序部署到Heroku: 要求 :warning_selector: 警告:ImageMagick当前具有严重的安全漏洞CVE-2016–3714。 安装...
上帝 如果您正在寻找与Rails 4+兼容的当前稳定版本,请参见分支Godmin是Rails 5+的管理框架。 用它来为您的应用程序或独立的管理应用程序(例如内部工具)构建专用的管理部分。 它支持常用功能,例如范围,筛选和对...
Rails 5.1+的简单视图组件,旨在与配合使用。 两者的灵感来自( 的作品以及《寂寞星球》(Lonely Planet)风格指南 的。 安装 将此行添加到您的应用程序的Gemfile中: gem "elemental_components" 然后执行: $ ...
ember-rails使在Rails 4.2+中开发应用程序变得更加容易。 此gem包含以下功能: 在构建资产管道时预编译车把模板。 包括Ember, 和的开发和生产副本。 包含以与Ember Data集成。 您可以在查看如何使用gem的示例...
github-css-rails Doc Walker 宝石化 为 Rails 3.1+ 资产管道提供 GitHub Flavored Markdown CSS。 安装 将这些行添加到应用程序的Gemfile : # github flavored markdown css packaged for the rails asset ...
json_schema_rails 用于Rails 3+的验证器和生成器 安装 将此行添加到您的应用程序的Gemfile中: gem 'json_schema_rails' 然后执行: $ bundle 或将其自己安装为: $ gem install json_schema_rails 用法 ...
jquery_file_download-rails 脚本以用于 Rails 3.1+ 和 Rails 4 资产管道。 安装 将jquery_file_download-rails添加到应用程序的Gemfile : gem 'jquery_file_download-rails' 运行 Bundler 来锁定 gem: ...