PassiveRecord 开源项目教程
1. 项目的目录结构及介绍
PassiveRecord 项目的目录结构如下:
passive_record/
├── bin/
├── features/
├── lib/
├── spec/
├── document/
├── .gitignore
├── .rspec
├── .yardopts
├── ChangeLog.md
├── Gemfile
├── LICENSE.txt
├── README.md
├── Rakefile
├── gemspec.yml
├── logo.png
├── notes.md
└── passive_record.gemspec
目录介绍:
- bin/: 包含可执行文件。
- features/: 包含 Cucumber 功能测试文件。
- lib/: 包含项目的主要代码。
- spec/: 包含 RSpec 测试文件。
- document/: 包含项目文档。
- .gitignore: Git 忽略文件配置。
- .rspec: RSpec 配置文件。
- .yardopts: YARD 文档生成器配置文件。
- ChangeLog.md: 项目变更日志。
- Gemfile: Ruby 依赖管理文件。
- LICENSE.txt: 项目许可证。
- README.md: 项目说明文档。
- Rakefile: Rake 任务配置文件。
- gemspec.yml: gemspec 配置文件。
- logo.png: 项目图标。
- notes.md: 项目笔记。
- passive_record.gemspec: gem 规范文件。
2. 项目的启动文件介绍
PassiveRecord 项目的启动文件主要是 lib/passive_record.rb
。这个文件负责加载项目的主要功能和模块。
# lib/passive_record.rb
require 'active_support'
require 'active_support/core_ext'
require 'passive_record/base'
require 'passive_record/associations'
require 'passive_record/query'
module PassiveRecord
# 项目初始化代码
end
3. 项目的配置文件介绍
PassiveRecord 项目的配置文件主要包括:
- Gemfile: 定义了项目的依赖关系。
- passive_record.gemspec: 定义了 gem 的规范和依赖。
- .rspec: 配置 RSpec 测试框架。
- .yardopts: 配置 YARD 文档生成器。
Gemfile
source 'https://rubygems.org'
gem 'active_support', '~> 4.2'
gem 'bundler', '~> 1.10'
gem 'codeclimate-test-reporter', '~> 0.1'
gem 'cucumber', '~> 0.10.2'
gem 'rake', '~> 10.0'
gem 'rspec', '~> 3.0'
gem 'rubygems-tasks', '~> 0.2'
gem 'yard', '~> 0.8'
passive_record.gemspec
# -*- encoding: utf-8 -*-
$:.push File.expand_path("../lib", __FILE__)
require "passive_record/version"
Gem::Specification.new do |s|
s.name = "passive_record"
s.version = PassiveRecord::VERSION
s.authors = ["Joseph Weissman"]
s.email = ["joe@deepc.io"]
s.homepage = "https://github.com/deepcerulean/passive_record"
s.summary = "An extremely lightweight in-memory pseudo-relational algebra."
s.description = "We implement a simplified subset of AR's interface in pure Ruby."
s.files = `git ls-files`.split("\n")
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ["lib"]
s.add_dependency "active_support", "~> 4.2"
s.add_development_dependency "bundler", "~> 1.10"
s.add_development_dependency "code