Vestal Versions 项目教程
1. 项目的目录结构及介绍
Vestal Versions 是一个用于跟踪 ActiveRecord 模型变化的 Ruby gem。以下是其目录结构的详细介绍:
vestal_versions/
├── CHANGELOG.md
├── Gemfile
├── LICENSE
├── README.rdoc
├── Rakefile
├── vestal_versions.gemspec
├── gemfiles/
├── lib/
│ ├── vestal_versions/
│ │ ├── version.rb
│ │ └── ...
│ └── vestal_versions.rb
└── spec/
└── ...
CHANGELOG.md
: 记录项目的更新日志。Gemfile
: 定义项目依赖。LICENSE
: 项目的许可证。README.rdoc
: 项目的说明文档。Rakefile
: 用于定义 Rake 任务。vestal_versions.gemspec
: 项目的 gemspec 文件。gemfiles/
: 包含不同版本的 Gemfile。lib/
: 包含项目的核心代码。vestal_versions/
: 核心功能模块。version.rb
: 定义版本相关的类和方法。
vestal_versions.rb
: 项目的主文件。
spec/
: 包含项目的测试代码。
2. 项目的启动文件介绍
项目的启动文件是 lib/vestal_versions.rb
。这个文件负责加载项目的核心功能模块,并初始化 Vestal Versions。
require 'active_record'
require 'active_support'
require 'vestal_versions/version'
require 'vestal_versions/configuration'
require 'vestal_versions/control'
require 'vestal_versions/conditions'
require 'vestal_versions/changes'
require 'vestal_versions/creation'
require 'vestal_versions/merging'
require 'vestal_versions/options'
require 'vestal_versions/reversion'
require 'vestal_versions/users'
require 'vestal_versions/version'
module VestalVersions
class << self
def configure
yield configuration
end
def configuration
@configuration ||= Configuration.new
end
end
end
ActiveRecord::Base.send :include, VestalVersions::Control
3. 项目的配置文件介绍
项目的配置文件是 vestal_versions.gemspec
。这个文件定义了 gem 的元数据和依赖项。
Gem::Specification.new do |s|
s.name = 'vestal_versions'
s.version = '2.0.0'
s.date = '2014-01-21'
s.summary = "Keep a DRY history of your ActiveRecord models' changes"
s.description = "Vestal Versions allows you to create a history of your ActiveRecord models' changes and view, revert to, and diff any version."
s.authors = ["Steve Richert", "James O'Kelly", "Jason Harrelson"]
s.email = 'steve.richert@gmail.com'
s.homepage = 'https://github.com/laserlemon/vestal_versions'
s.license = 'MIT'
s.files = `git ls-files`.split("\n")
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
s.add_dependency 'activerecord', '< 5', '>= 3'
s.add_dependency 'activesupport', '< 5', '>= 3'
s.add_development_dependency 'bundler', '~> 1.0'
s.add_development_dependency 'rake', '~> 10.0'
end
这个文件包含了 gem 的名称、版本、描述、作者、许可证等信息,以及运行时和开发依赖项。