`

rails mongoid + carrierwave

 
阅读更多

中间插件: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框架+网上商城项目实战

    Ruby On Rails系列从入门到精通实战教程 Ruby基础+Rails框架+网上商城项目实战

    CRA+RailsAPI+设计登录+ActiveAdmin样板_Ruby_JavaScript_下.zip

    标题 "CRA+RailsAPI+设计登录+ActiveAdmin样板_Ruby_JavaScript_下" 提供了关于项目的核心技术栈,其中包括Create React App (CRA)、Ruby on Rails API 和 ActiveAdmin,以及登录功能的设计。这是一份使用前端React...

    carrierwave-mongoid:对CarrierWave的Mongoid支持

    安装安装最新版本: gem install carrierwave-mongoid在您的代码中要求它: require 'carrierwave/mongoid' 或者,在Rails中,您可以将其添加到您的Gemfile中: gem 'carrierwave-mongoid' , :require =&gt; '...

    RailsAPI+React+Deviseの认证机能さんプル_Ruby_TypeScript.zip

    标题 "RailsAPI+React+Deviseの认证机能さんプル_Ruby_TypeScript.zip" 提供了一个项目概览,它是一个使用Rails API、React前端和Devise进行身份验证的示例应用。这个项目融合了Ruby on Rails后端开发框架、React...

    Rails3+GithubOAuth2+设计示例应用程序_Ruby_JavaScript_下.zip

    标题 "Rails3+GithubOAuth2+设计示例应用程序" 提供了我们正在处理一个使用Rails 3框架构建的Web应用程序,该应用集成了Github的OAuth2授权机制。Rails是Ruby on Rails的简称,是一个流行的开源Web开发框架,以其DRY...

    rails-carrierwave-s3:使用 Rails 中的 Carrierwave 将图像上传到 S3

    rails-carrierwave-s3 使用 Rails 中的 Carrierwave 将图像上传到 S3。 克隆这个 repo,然后运行: bundle install rake db:migrate 之后,您需要从 AWS 获取密钥以上传到 S3。 将这些密钥存储在您的config/...

    Rails N + 1查询自动检测为零误报/误报-Ruby开发

    Prosopite能够以零误报/误报自动检测Rails N + 1查询。 Prosopite Prosopite能够自动检测零误报/误报的Rails N + 1查询。 已检测到N + 1个查询:从`users`的WHERE`users.`id` = 20 LIMIT 1中选择SELECT`users`。*从`...

    rails3-mongoid-devise:已弃用。 在https:github.comRailsApps使用新版本

    Rails3 + Mongoid + Devise 这是一个将Devise与Mongoid相结合的示例Rails 3应用程序。 gem为您提供现成的身份验证和用户管理。 MongoDB与 gem一起用作数据存储,无需进行架构或迁移即可快速开发。 该项目已完成! ...

    Ruby+Rails+社交+教程

    这个“Ruby+Rails+社交+教程”显然旨在引导开发者如何利用Rails的灵活性和强大功能构建一个完整的社交平台。以下是教程可能涵盖的一些核心知识点: 1. **Ruby基础知识**:首先,你需要对Ruby编程语言有基本的理解,...

    rails4_crud_with_angularjs:Rails4 + AngularJS 嵌套表单

    Rails4 + AngularJS 查看演示应用程序。 使用 Rails4 + AngularJS 的 CRUD 示例 在这个应用程序中,我给出了如何使用 Rails4 和 AngularJS 创建 CRUD 操作的示例。 使用 AngularJS 创建嵌套表单 当我们需要在 ...

    rails+grape+swagger+devise+capistrano 简单融合示例

    总结来说,这个"rails+grape+swagger+devise+capistrano"的简单融合示例展示了一个完整的、功能齐全的API项目架构。Rails作为基础框架,Grape负责API的构建,Swagger用于API的文档化,Devise处理用户认证,而...

    Ruby+Rails+社交+教程3

    本教程“Ruby+Rails+社交+教程3”旨在帮助开发者掌握如何利用Ruby的强大功能和Rails的优雅设计来构建一个具有用户交互性的社交平台。 首先,让我们深入了解一下Ruby。Ruby是一种面向对象的编程语言,以其简洁、易读...

    Ruby+Rails+社交+进阶教程5

    在本“Ruby+Rails+社交+进阶教程5”中,我们将深入探讨如何利用Ruby on Rails框架构建一个功能丰富的社交网络平台。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制...

    fineryrycms:支持Rails 6.0+的可扩展Ruby on Rails CMS

    Rails 5.1+的开源内容管理系统 有关更多信息,访问 您可以使用Gitter与我们聊天: 您可以将示例应用程序部署到Heroku: 要求 :warning_selector: 警告:ImageMagick当前具有严重的安全漏洞CVE-2016–3714。 安装...

    Godmin:Rails 4+的管理框架

    上帝 如果您正在寻找与Rails 4+兼容的当前稳定版本,请参见分支Godmin是Rails 5+的管理框架。 用它来为您的应用程序或独立的管理应用程序(例如内部工具)构建专用的管理部分。 它支持常用功能,例如范围,筛选和对...

    elemental_components:Rails 5.1+的简单视图组件

    Rails 5.1+的简单视图组件,旨在与配合使用。 两者的灵感来自( 的作品以及《寂寞星球》(Lonely Planet)风格指南 的。 安装 将此行添加到您的应用程序的Gemfile中: gem "elemental_components" 然后执行: $ ...

    ember-rails:Ember for Rails 3.1+

    ember-rails使在Rails 4.2+中开发应用程序变得更加容易。 此gem包含以下功能: 在构建资产管道时预编译车把模板。 包括Ember, 和的开发和生产副本。 包含以与Ember Data集成。 您可以在查看如何使用gem的示例...

    gem-github-css-rails:为 Rails 3.1+ 资产管道提供 GitHub Flavored Markdown CSS

    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+的JSON模式验证器和生成器

    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.fileDownload.js 包

    jquery_file_download-rails 脚本以用于 Rails 3.1+ 和 Rails 4 资产管道。 安装 将jquery_file_download-rails添加到应用程序的Gemfile : gem 'jquery_file_download-rails' 运行 Bundler 来锁定 gem: ...

Global site tag (gtag.js) - Google Analytics