CarrierWave Mongoid 使用教程
1. 项目的目录结构及介绍
CarrierWave Mongoid 项目的目录结构如下:
carrierwave-mongoid/
├── Gemfile
├── Gemfile.lock
├── LICENSE
├── README.md
├── Rakefile
├── carrierwave-mongoid.gemspec
├── lib/
│ ├── carrierwave/
│ │ ├── mongoid.rb
│ │ └── orm/
│ │ └── mongoid.rb
│ └── carrierwave-mongoid.rb
├── spec/
│ ├── carrierwave/
│ │ ├── mongoid_spec.rb
│ │ └── orm/
│ │ └── mongoid_spec.rb
│ └── spec_helper.rb
目录结构介绍
Gemfile
和Gemfile.lock
:定义了项目的依赖关系。LICENSE
:项目的许可证。README.md
:项目的基本介绍和使用说明。Rakefile
:用于定义 Rake 任务。carrierwave-mongoid.gemspec
:gem 的规范文件。lib/
:包含项目的核心代码。carrierwave/mongoid.rb
:为 Mongoid 提供支持的主要文件。carrierwave/orm/mongoid.rb
:为 Mongoid ORM 提供支持的文件。
spec/
:包含项目的测试代码。carrierwave/mongoid_spec.rb
:测试 Mongoid 支持的文件。carrierwave/orm/mongoid_spec.rb
:测试 Mongoid ORM 支持的文件。
2. 项目的启动文件介绍
项目的启动文件主要是 lib/carrierwave-mongoid.rb
和 lib/carrierwave/mongoid.rb
。
lib/carrierwave-mongoid.rb
这是项目的入口文件,负责加载必要的依赖和模块:
require 'carrierwave'
require 'mongoid'
require 'carrierwave/mongoid'
lib/carrierwave/mongoid.rb
这个文件为 Mongoid 提供支持,主要功能包括:
require 'carrierwave/mongoid/version'
require 'carrierwave/storage/grid_fs'
require 'carrierwave/validations/active_model'
module CarrierWave
module Mongoid
include CarrierWave::Mount
# ...
end
end
3. 项目的配置文件介绍
项目的配置文件主要是 carrierwave-mongoid.gemspec
和 Gemfile
。
carrierwave-mongoid.gemspec
这个文件定义了 gem 的规范,包括名称、版本、作者、依赖等信息:
Gem::Specification.new do |spec|
spec.name = "carrierwave-mongoid"
spec.version = CarrierWave::Mongoid::VERSION
spec.authors = ["Jonas Nicklas", "Trevor Turk"]
spec.summary = %q{Mongoid support for CarrierWave}
spec.description = %q{Mongoid support for CarrierWave}
spec.homepage = "https://github.com/carrierwaveuploader/carrierwave-mongoid"
spec.license = "MIT"
spec.files = `git ls-files -z`.split("\x0")
spec.require_paths = ["lib"]
spec.add_dependency "carrierwave", "< 0.11.0", ">= 0.8.0"
spec.add_dependency "mongoid", "< 6.0", ">= 3.0"
spec.add_dependency "mongoid-grid_fs", "< 3.0", ">= 1.3"
spec.add_development_dependency "mini_magick", ">= 0"
spec.add_development_dependency "pry", ">= 0"
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "rspec", "~> 2.14"
end
Gemfile
这个文件定义了项目的依赖关系:
source 'https://rubygems.org'
gem 'carrierwave