hstore_accessor 项目教程
1. 项目的目录结构及介绍
hstore_accessor 项目的目录结构如下:
hstore_accessor/
├── Gemfile
├── Gemfile.lock
├── LICENSE.md
├── README.md
├── Rakefile
├── hstore_accessor.gemspec
├── lib/
│ ├── hstore_accessor.rb
│ ├── hstore_accessor/
│ │ ├── association_scope.rb
│ │ ├── attribute.rb
│ │ ├── attribute_methods.rb
│ │ ├── dirty.rb
│ │ ├── field_type.rb
│ │ ├── macros.rb
│ │ ├── method_factory.rb
│ │ ├── query_methods.rb
│ │ ├── scope_builder.rb
│ │ ├── serialization.rb
│ │ ├── version.rb
│ │ └── virtual_class.rb
│ └── tasks/
│ └── hstore_accessor.rake
└── spec/
├── hstore_accessor_spec.rb
├── spec_helper.rb
└── support/
├── database.rb
├── matchers.rb
└── schema.rb
目录结构介绍
Gemfile
和Gemfile.lock
:定义了项目的依赖关系。LICENSE.md
:项目的许可证文件。README.md
:项目的说明文档。Rakefile
:用于定义 Rake 任务。hstore_accessor.gemspec
:gem 的规范文件。lib/
:包含项目的核心代码。hstore_accessor.rb
:主入口文件。hstore_accessor/
:包含各个模块的实现。
spec/
:包含项目的测试代码。
2. 项目的启动文件介绍
项目的启动文件是 lib/hstore_accessor.rb
。这个文件是整个 gem 的入口点,负责加载其他模块和定义主要的功能。
require "active_record"
require "hstore_accessor/version"
require "hstore_accessor/macros"
require "hstore_accessor/attribute_methods"
require "hstore_accessor/dirty"
require "hstore_accessor/query_methods"
require "hstore_accessor/association_scope"
require "hstore_accessor/virtual_class"
module HstoreAccessor
extend ActiveSupport::Concern
included do
include Macros
include AttributeMethods
include Dirty
include QueryMethods
include AssociationScope
include VirtualClass
end
end
ActiveRecord::Base.send(:include, HstoreAccessor)
启动文件介绍
- 引入了
active_record
和其他必要的模块。 - 定义了
HstoreAccessor
模块,并将其包含在ActiveRecord::Base
中。
3. 项目的配置文件介绍
项目的配置文件主要是 hstore_accessor.gemspec
。这个文件定义了 gem 的元数据和依赖项。
# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'hstore_accessor/version'
Gem::Specification.new do |spec|
spec.name = "hstore_accessor"
spec.version = HstoreAccessor::VERSION
spec.authors = ["Joe Hirn", "Cory Stephenson", "JC Grubbs", "Tony Coconate", "Michael Crismali"]
spec.email = ["joe@devmynd.com"]
spec.description = %q{Adds typed hstore backed fields to an ActiveRecord model.}
spec.summary = %q{Adds typed hstore backed fields to an ActiveRecord model.}
spec.homepage = "https://github.com/madeintandem/hstore_accessor"
spec.license = "MIT"
spec.files = `git ls-files`.split($/)
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
spec.require_paths