fast_versioning 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +25 -1
- data/Rakefile +2 -22
- data/db/migrate/20160914161314_create_fast_versioning_fast_versions.rb +1 -1
- data/lib/fast_versioning/paper_trail_extensions.rb +18 -13
- metadata +19 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 87613fb753cc329fe499c239bc0a84ce505879abb87c4c74cff07c657b0b86db
|
4
|
+
data.tar.gz: 7dec724f5f187384c874ff7af8bd4751054d5462e0e2233d94dfc03075f5e3f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b635ba136aed6ec8b8ef573a4e8d958826ff5d481a83fc75f1dddee18d706b6b8909a3b323d1e3db18bf6042f7e4cda7c03ad770848a22147ee19a7e982f8b1
|
7
|
+
data.tar.gz: 8a2ca6a9207836d1f54feaa6ffddfd86a3583493b00aad0897eb3a25f321e47752892f84b68e7298e96247d944b6c389f1c4742ce04fe4ef2b530b511f143f88
|
data/README.md
CHANGED
@@ -20,6 +20,17 @@ gem 'fast_versioning'
|
|
20
20
|
rake fast_versioning:install:migrations
|
21
21
|
```
|
22
22
|
|
23
|
+
Prerequisites
|
24
|
+
-------------
|
25
|
+
- PaperTrail needs to be added to your model
|
26
|
+
- Storing changes needs to be enabled for PaperTrail
|
27
|
+
- Attributes tracked with FastVersioning need to also be present in PaperTrail
|
28
|
+
ie.
|
29
|
+
```ruby
|
30
|
+
has_paper_trail only: :status
|
31
|
+
has_fast_versions :status
|
32
|
+
```
|
33
|
+
|
23
34
|
Configuration
|
24
35
|
-------------
|
25
36
|
1. Include the concern in your model
|
@@ -46,8 +57,21 @@ has_fast_versions(
|
|
46
57
|
|
47
58
|
Usage
|
48
59
|
-----
|
60
|
+
### Creating and recreating fast versions
|
61
|
+
FastVersioning versions are created based on the `PaperTrail::Version` instance. When available, the `changeset` is used, otherwise, FastVersioning will attempt to `reify` the object comparing the changes for the tracked columns.
|
62
|
+
|
63
|
+
At any point you can retroactively recreate FastVersioning versions (especially, initially, when adding fast versions to existing PaperTrail configuration, or when adding/changing FastVersioning options for a model), to do so you need to call the `recreate_fast_versions!` on the `PaperTrail::Version` instance. It will destroy all previous fast versions if they exist and recreate them.
|
64
|
+
|
65
|
+
Example usage:
|
66
|
+
```ruby
|
67
|
+
# recreate fast versions for a single model instance
|
68
|
+
your_model.versions.find_each(&:recreate_fast_versions!)
|
69
|
+
|
70
|
+
# recreate fast versions for all model instances
|
71
|
+
YourModel.find_each { |your_model| your_model.versions.find_each(&:recreate_fast_versions!) }
|
72
|
+
```
|
49
73
|
|
50
|
-
###
|
74
|
+
### Querying
|
51
75
|
```ruby
|
52
76
|
your_model.fast_versions # get all fast versions
|
53
77
|
your_model.fast_versions_for(:plan_type) # get fast versions for given property - chain
|
data/Rakefile
CHANGED
@@ -4,6 +4,8 @@ rescue LoadError
|
|
4
4
|
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
5
|
end
|
6
6
|
|
7
|
+
require 'bundler/gem_tasks'
|
8
|
+
|
7
9
|
require 'rdoc/task'
|
8
10
|
|
9
11
|
RDoc::Task.new(:rdoc) do |rdoc|
|
@@ -13,25 +15,3 @@ RDoc::Task.new(:rdoc) do |rdoc|
|
|
13
15
|
rdoc.rdoc_files.include('README.md')
|
14
16
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
17
|
end
|
16
|
-
|
17
|
-
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
|
18
|
-
load 'rails/tasks/engine.rake'
|
19
|
-
|
20
|
-
|
21
|
-
load 'rails/tasks/statistics.rake'
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
require 'bundler/gem_tasks'
|
26
|
-
|
27
|
-
require 'rake/testtask'
|
28
|
-
|
29
|
-
Rake::TestTask.new(:test) do |t|
|
30
|
-
t.libs << 'lib'
|
31
|
-
t.libs << 'test'
|
32
|
-
t.pattern = 'test/**/*_test.rb'
|
33
|
-
t.verbose = false
|
34
|
-
end
|
35
|
-
|
36
|
-
|
37
|
-
task default: :test
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class CreateFastVersioningFastVersions < ActiveRecord::Migration
|
1
|
+
class CreateFastVersioningFastVersions < ActiveRecord::Migration[5.0]
|
2
2
|
def change
|
3
3
|
create_table :fast_versioning_fast_versions do |t|
|
4
4
|
t.references :item, polymorphic: true, index: { name: 'fast_version_item_index' }
|
@@ -12,19 +12,24 @@ module FastVersioning
|
|
12
12
|
value_change = FastVersioning::ValueChange.new(version: self)
|
13
13
|
|
14
14
|
item.send(:fast_version_for).each do |tracked_attribute|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
15
|
+
name = tracked_attribute.name
|
16
|
+
new_value = value_change.value_became(name)
|
17
|
+
prev_value = value_change.value_was(name)
|
18
|
+
|
19
|
+
# Skip if value unchanged.
|
20
|
+
next if prev_value == new_value
|
21
|
+
|
22
|
+
fast_versions.create(
|
23
|
+
item_id: item_id,
|
24
|
+
item_type: item_type,
|
25
|
+
whodunnit_id: whodunnit&.to_i,
|
26
|
+
whodunnit_type: whodunnit_type,
|
27
|
+
name: name,
|
28
|
+
value: new_value,
|
29
|
+
prev_value: prev_value,
|
30
|
+
meta: tracked_attribute.meta,
|
31
|
+
created_at: created_at
|
32
|
+
)
|
28
33
|
end
|
29
34
|
end
|
30
35
|
true
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fast_versioning
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arcadia Power
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2019-01-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -18,28 +18,40 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
21
|
+
version: '5.0'
|
22
|
+
- - "<"
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: '5.2'
|
22
25
|
type: :runtime
|
23
26
|
prerelease: false
|
24
27
|
version_requirements: !ruby/object:Gem::Requirement
|
25
28
|
requirements:
|
26
29
|
- - ">="
|
27
30
|
- !ruby/object:Gem::Version
|
28
|
-
version: '0'
|
31
|
+
version: '5.0'
|
32
|
+
- - "<"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '5.2'
|
29
35
|
- !ruby/object:Gem::Dependency
|
30
36
|
name: paper_trail
|
31
37
|
requirement: !ruby/object:Gem::Requirement
|
32
38
|
requirements:
|
33
|
-
- - "
|
39
|
+
- - ">="
|
34
40
|
- !ruby/object:Gem::Version
|
35
41
|
version: '4.2'
|
42
|
+
- - "<"
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '6'
|
36
45
|
type: :runtime
|
37
46
|
prerelease: false
|
38
47
|
version_requirements: !ruby/object:Gem::Requirement
|
39
48
|
requirements:
|
40
|
-
- - "
|
49
|
+
- - ">="
|
41
50
|
- !ruby/object:Gem::Version
|
42
51
|
version: '4.2'
|
52
|
+
- - "<"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '6'
|
43
55
|
- !ruby/object:Gem::Dependency
|
44
56
|
name: sqlite3
|
45
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -105,8 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
117
|
- !ruby/object:Gem::Version
|
106
118
|
version: '0'
|
107
119
|
requirements: []
|
108
|
-
|
109
|
-
rubygems_version: 2.5.1
|
120
|
+
rubygems_version: 3.0.2
|
110
121
|
signing_key:
|
111
122
|
specification_version: 4
|
112
123
|
summary: Fast versioning extension for paper_trail
|